[英]In C#, how can I tell whether a generic type, T, is (not implements!) an interface?
编辑 :我犯了一个错误,前提是错误的。 typeof(T).IsClass确实可以工作-正如所指出的typeof(T)IsInterface一样。
说我有这种方法:
public T GetService<T>() where T : IService
我想测试泛型T是否作为接口而不是作为类发送到此方法中。 换句话说,我想区分来自MyClass.GetService<IService>()
和MyClass.GetService<ImplementingClass>()
。 我怎样才能做到这一点?
我尝试使用is object
,并且is System.Object
,但是不会造成这种区别。 使用typeof(T).IsClass
和default(T).IsClass
也不起作用,因为分别返回System.Type的返回类型始终是一个类,并且因为IsClass不可用于默认T。
我还能怎么做?
我测试了您的情况,typeof(T)。IsClass确实有效
原来我的前提是错的。 这确实有效:
typeof(T).IsClass
如果指定了接口,则返回false。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.