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?
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; ...
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden