Mat*_*ats 3 c# reflection pinvoke assemblies interface
我有一些代码来加载程序集并获取所有类型,实现某个接口,就像这样(假设asm是一个有效的加载程序集).
var results = from type in asm.GetTypes()
where typeof(IServiceJob).IsAssignableFrom(type)
select type;
Run Code Online (Sandbox Code Playgroud)
现在我陷入困境:我需要创建这些对象的实例并在对象上调用方法和属性.我需要将对已创建对象的引用存储在一个数组中以供以后使用.
Mat*_*ton 11
哇 - 几天前我只在博客上发表过这篇文章.这是我返回实现给定接口的所有类型的实例的方法:
private static IEnumerable<T> InstancesOf<T>() where T : class
{
var type = typeof(T);
return from t in type.Assembly.GetExportedTypes()
where t.IsClass
&& type.IsAssignableFrom(t)
&& t.GetConstructor(new Type[0]) != null
select (T)Activator.CreateInstance(t);
}
Run Code Online (Sandbox Code Playgroud)
如果您重构它以接受汇编参数而不是使用接口的程序集,它就会变得足够灵活以满足您的需要.
归档时间: |
|
查看次数: |
3244 次 |
最近记录: |