Załóżmy, że mam typ MyType. Chcę wykonać następujące czynności:Sprawdzanie, czy typ implementuje ogólny interfejs
- Sprawdzaj czy MyType implementuje IList interfejs jakiegoś T.
- Jeśli odpowiedź na (1) jest tak, dowiedzieć się, co T.
Wygląda na to, że jest to metoda GetInterface(), ale pozwala ona tylko na wyszukiwanie według określonej nazwy. Czy istnieje sposób, aby szukać „wszystkich interfejsów, które są z IList postaci”
pokrewne (Jeśli to możliwe chciałbym znów być również przydatna, jeśli to działało jeśli interfejs był podinterfejsu z IList.): How to determine if a type implements a specific generic interface type
Obsługuje także przypadek tablic, co jest miłe. Jeśli chcesz przetestować jawnie tablice, użyj "if (myType.IsArray) return myType.GetElementType();" (Chociaż może to być szybsze, mam nadzieję, że nic z tego nie jest krytyczne pod względem wydajności!) – yoyo
Dla osób takich jak ja, które były ciekawi, dlaczego potrzebne jest .IsInterface: GetGenericTypeDefinition() wyrzuca, jeśli jest wywoływany w typie nietypowym. – GameFreak
Właściwość Type.IsGenericType nie jest dostępna w sieciach o jakości 1.6 i niższych (a zatem niedostępnych w .NET Core 1.0), ale można użyć TypeInfo.IsGenericType zamiast: type.GetTypeInfo(). IsGenericType. – dotarj