TDM Geschrieben 11. Februar 2008 Teilen Geschrieben 11. Februar 2008 Tag. Ich habe hier eine Klasse mit einem Dictionary von Objekten. Definiert ist das ganze so: Dictionary<string, IObject> content = new Dictionary<string, IObject>(); Damit ich das nicht immer Casten muss, wollte ich eine generische Funktion schreiben. Problem dabei ist allerdings, dass der Compiler meine Typeinschränkung nicht mag. Das ganze sieht etwa so aus: public T get<T> (string name) where T : IObject { if (!content.ContainsKey(Name)) return default(T); return content[Name] as T; } Compilerfehler: Der "Typparameter"-Typparameter kann nicht mit dem as-Operator verwendet werden, da er nicht über eine Einschränkung für einen Klassentyp oder über eine class-Einschränkung verfügt. Woran liegt das? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Trux Geschrieben 11. Februar 2008 Teilen Geschrieben 11. Februar 2008 Der Compiler weis nicht ob T ein Wert oder Verweistyp ist. Die "as" anweisung geht nur bei verweistypen. "Behebeung" des Problems: ... T ret = default(T); object objVal = content[Name] as object; if(objVal != null && typeof(T).IsAssignableFrom(objVal.getType()) ret = (T)objVal; return ret; ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.