如何使用接口作为C#泛型类型约束?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (8)

是否有一种方法可以获得以下函数声明?

public bool Foo<T>() where T : interface;

其中T是一个接口类型(类似于,和)。

目前,我已经决定:

public bool Foo<T>() where T : IBase;

其中IBASE被定义为由我的所有自定义接口继承的空接。不太理想,但应该有效。为什么不能定义泛型类型必须是接口?

提问于
用户回答回答于

你能做的最接近的(除了你的基本接口方法)是““,意思是参考类型。没有语法来表示“任何接口”。

这个(“)例如,在WCF中使用,以限制客户只使用服务合同(接口)。

用户回答回答于

我知道这有点晚了,但是对于那些感兴趣的人,您可以使用运行时检查。

typeof(T).IsInterface

扫码关注云+社区