为了账号安全,请及时绑定邮箱和手机立即绑定

获取实现接口的所有类型。

获取实现接口的所有类型。

C#
qq_遁去的一_1 2019-06-18 10:34:15
获取实现接口的所有类型。使用反射,如何以最少的代码实现用C#3.0/.NET 3.5实现接口的所有类型,并尽量减少迭代?这就是我想重写的:foreach (Type t in this.GetType().Assembly.GetTypes())     if (t is IMyInterface)         ; //do stuff
查看完整描述

3 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

这对我有用。它循环遍历类并检查它们是否是从myInterface中剥离出来的。

 foreach (Type mytype in System.Reflection.Assembly.GetExecutingAssembly().GetTypes()
                 .Where(mytype => mytype .GetInterfaces().Contains(typeof(myInterface)))) {
    //do stuff
 }


查看完整回答
反对 回复 2019-06-18
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

若要在程序集中查找实现Ifoo接口的所有类型,请执行以下操作:

var results = from type in someAssembly.GetTypes()
              where typeof(IFoo).IsAssignableFrom(type)
              select type;

请注意RyanRinaldi的建议是不正确的。它将返回0种类型。你不能写

where type is IFoo

因为type是System.Type实例,并且永远不会是Ifoo类型。相反,您可以检查从类型中是否可以分配Ifoo。会得到你预期的结果。

此外,亚当赖特的建议,这是目前标记为答案,也是错误的,以及出于同样的原因。在运行时,您将看到0种类型返回,因为所有System.Type实例都不是IFoo实现者。


查看完整回答
反对 回复 2019-06-18
  • 3 回答
  • 0 关注
  • 697 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信