Я хочу сделать что-то вроде этого
class SomeClass<T>
{
SomeClass()
{
bool IsInterface = T is ISomeInterface;
}
}
Что лучший способ к чему-то вроде этого?
Примечание: Я не надеюсь ограничивать T
с a where
, но я хотел бы, чтобы мой код знал что типы интерфейсов T
реализации. Я предпочел бы, чтобы я не создавал a T
.
Я не думаю, что вы можете использовать для этого оператор is
. Но вы можете использовать IsAssignableFrom:
bool IsInterface = typeof(ISomeInterface).IsAssignableFrom(typeof(T));
следует использовать следующее:
bool IsInterface = typeof(ISomeInterface).IsAssignableFrom(typeof(T));
is operator
is
Оператор используется для проверки того, совместим ли тип времени выполнения
объекта
с
с заданным типом
.
Выражение, в котором используется как
, соответствует синтаксису, оценивается как истинное, если выполняются оба следующих условия:
Ссылки
Вы можете использовать IsAssignableFrom:
class SomeClass<T>
{
SomeClass()
{
bool IsIComparable = typeof(IComparable).IsAssignableFrom(typeof(T));
}
}
bool IsInterface = typeof(ISomeInterface).IsAssignableFrom(typeof(T))
Вы можете попробовать сделать что-нибудь вроде
Type Ttype = typeof(T);
. Это даст вам всю мощь класса Type, который имеет такие функции, как "FindInterfaces".
Я считаю, что лучшее, что вы можете сделать:
bool IsInterface = typeof(ISomeInterface).IsAssignableFrom(typeof(T));