编辑:我犯了一个错误,前提错了。 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。
我还能怎么做?
答案 0 :(得分:1)
答案 1 :(得分:1)
我测试了你的案例,typeof(T).IsClass确实有用
答案 2 :(得分:0)
事实证明我的前提是错误的。这确实有效:
typeof(T).IsClass
如果指定了接口,则返回false。