[英]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.