Zum Inhalt springen

[C#] Generische Typeinschränkung


Empfohlene Beiträge

Geschrieben

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?

Geschrieben

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;

...

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...