繁体   English   中英

在程序集中搜索类并调用方法

[英]Search classes in an assembly and call a method

我试图在程序集中查找妨碍某些接口的所有类,然后在我看来基本上得到该对象的属性。 这是我尝试过的:

List<IManager> Managers = new List<IManager>();
const string @namespace = "MyProject.Models.Manager";
var managerClasses = from t in Assembly.GetExecutingAssembly().GetTypes()
        where t.IsClass && t.Namespace == @namespace
        select t;

foreach (var managerClass in managerClasses.Where(t => typeof(IManager).IsAssignableFrom(t)))
{
    var r = (IManager) managerClass;
    Managers.Add(r);
}

我的代码在var r = (IManager) managerClass;上崩溃var r = (IManager) managerClass; 而且我不明白如何将对象转换为IManager类型。

编辑:我已经使用适当的变量名修复了上面的代码,以消除混淆。

在执行var r = (IManager) report的位置,报告仍然是Type对象。 您将需要实例化该类型。 您可以使用Activator.CreateInstance()进行此操作,但您可能还想先对该类型的构造函数进行断言(例如,需要无参数构造函数),并还要检查它是否是具体的类类型(即,不是抽象的)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM