TDM Geschrieben 11. Februar 2008 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
Trux Geschrieben 11. Februar 2008 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
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.