Testen des generischen Typs eines Objekts in C#
In C# ist es wichtig, den generischen Typ eines Objekts zu überprüfen, um sicherzustellen, dass es ordnungsgemäß ist Handhabung und Kompatibilität in Ihrem Code. Ein gängiger Ansatz besteht darin, die Methode GetType() zu verwenden, um den Typ eines Objekts abzurufen und ihn mit einer bekannten generischen Typdefinition zu vergleichen. Dieser Ansatz kann jedoch zu Fehlern führen, wenn versucht wird, den generischen Typ zu bestimmen.
Das Problem mit der Typäquivalenz
Der bereitgestellte Code:
public bool Test() { List<int> list = new List<int>(); return list.GetType() == typeof(List<>); }
mag logisch erscheinen, wird aber immer false zurückgeben, da der Operator == die Typäquivalenz vergleicht. Der generische Typ List<> stellt eine generische Liste dar, die jeden Typ speichern kann, nicht nur Ganzzahlen. Daher ist der Typ von Liste spezifischer als Liste<>, was zu einem Ungleichheitsvergleich führt.
Lösungen zum Testen generischer Typen
Um genau zu testen, ob ein Objekt von einem generischen Typ ist, verwenden Sie Folgendes Ansätze:
Auf generische Instanz prüfen:
Um festzustellen, ob ein Objekt eine Instanz eines generischen Typs ist, verwenden Sie die Eigenschaft IsGenericType:
return list.GetType().IsGenericType;
Dies gibt true zurück, wenn list eine Instanz eines generischen Elements ist Klasse.
Auf bestimmten generischen Typ prüfen:
Um zu überprüfen, ob es sich bei einem Objekt um eine bestimmte generische Liste handelt (Liste<>), verwenden Sie die Methode GetGenericTypeDefinition():
return list.GetType().GetGenericTypeDefinition() == typeof(List<>);
Dies wird zurückgegeben wahr, wenn list eine Instanz von List<> ist, aber keine abgeleiteten Typen.
Bedenken Sie, dass diese Prüfungen eine genaue Typäquivalenz feststellen. Wenn ein Objekt eine Instanz eines abgeleiteten generischen Typs ist (z. B. List
Das obige ist der detaillierte Inhalt vonWie kann ich den generischen Typ eines Objekts in C# genau testen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!