我想做这样的事情
class SomeClass<T>
{
SomeClass()
{
bool IsInterface = T is ISomeInterface;
}
}
这样的最佳方式是什么?
注意:我不打算用T
限制where
,但我希望我的代码能够了解T
实现的接口类型。我希望我不必构建T
。
答案 0 :(得分:27)
我认为您不能使用is
运算符。但是你可以使用IsAssignableFrom:
bool IsInterface = typeof(ISomeInterface).IsAssignableFrom(typeof(T));
答案 1 :(得分:7)
应使用以下内容
bool IsInterface = typeof(ISomeInterface).IsAssignableFrom(typeof(T));
是运营商
is
运算符用于检查对象的run-time type
compatible
为type
。
如果满足以下两个条件,is
的使用符合语法的表达式,计算结果为true:
<强>参考强>
答案 2 :(得分:2)
您可以使用IsAssignableFrom:
class SomeClass<T>
{
SomeClass()
{
bool IsIComparable = typeof(IComparable).IsAssignableFrom(typeof(T));
}
}
答案 3 :(得分:2)
bool IsInterface = typeof(ISomeInterface).IsAssignableFrom(typeof(T))
答案 4 :(得分:1)
我相信你能做到最好:
bool IsInterface = typeof(ISomeInterface).IsAssignableFrom(typeof(T));
答案 5 :(得分:0)
您可以尝试做类似
的事情Type Ttype = typeof(T);
这将为您提供Type类的全部功能,它具有“FindInterfaces”等功能。