Проверка Type.GetInterface
метод:
Вместо попытки приведения к какому-либо объекту интерфейса необходимо проверить, реализует ли объекттакой интерфейс.Если это так, вы можете привести его к типу интерфейса или, если вы хотите напечатать тип в некоторый поток, если он реализует интерфейс, вывести его строковое представление.
Вы можете реализовать расширениеметод, подобный следующему, чтобы облегчить жизнь:
public static bool Implements<T>(this Type some)
{
return typeof(T).IsInterface && some.GetInterfaces().Count(someInterface => someInterface == typeof(T)) == 1;
}
И, наконец, вы можете сделать это:
Type interfaceType = someObject.GetType().Implements<IInterface>() ? typeof(IInterface) : default(Type);