猿问

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

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

使用反射,如何以最少的代码实现用C#3.0/.NET 3.5实现接口的所有类型,并尽量减少迭代?

这就是我想重写的:

foreach (Type t in this.GetType().Assembly.GetTypes())
    if (t is IMyInterface)
        ; //do stuff


qq_遁去的一_1
浏览 698回答 3
3回答

白衣非少年

这对我有用。它循环遍历类并检查它们是否是从myInterface中剥离出来的。 foreach (Type mytype in System.Reflection.Assembly.GetExecutingAssembly().GetTypes()                  .Where(mytype => mytype .GetInterfaces().Contains(typeof(myInterface)))) {     //do stuff  }

蛊毒传说

若要在程序集中查找实现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实现者。
随时随地看视频慕课网APP
我要回答