搜索程序集中的类并调用方法
本文关键字:调用 方法 程序 程序集 集中 搜索 | 更新日期: 2023-09-27 18:35:55
我试图在程序集中找到所有影响某个接口的类,然后基本上获得该对象的属性。 这是我尝试过的:
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;
上崩溃,我不明白如何将该对象转换为 IManager 类型。
编辑:我已经用适当的变量名称修复了上面的代码以消除混淆。
在您执行var r = (IManager) report
的位置,报表仍然是Type
对象。您需要实例化该类型。您可以使用Activator.CreateInstance()
执行此操作,但您可能还希望首先对该类型的构造函数做出一些断言(例如,需要一个无参数构造函数),并检查它是否是具体的类类型(即不是抽象的)。