当前位置:  开发笔记 > 编程语言 > 正文

如何使用从程序集动态加载的接口并调用其成员

如何解决《如何使用从程序集动态加载的接口并调用其成员》经验,为你挑选了1个好方法。

我有一些代码来加载程序集并获取所有类型,实现某个接口,就像这样(假设asm是一个有效的加载程序集).

var results = from type in asm.GetTypes()
  where typeof(IServiceJob).IsAssignableFrom(type)
  select type;

现在我陷入困境:我需要创建这些对象的实例并在对象上调用方法和属性.我需要将对已创建对象的引用存储在一个数组中以供以后使用.



1> Matt Hamilto..:

哇 - 几天前我只在博客上发表过这篇文章.这是我返回实现给定接口的所有类型的实例的方法:

private static IEnumerable InstancesOf() 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);
}

如果您重构它以接受汇编参数而不是使用接口的程序集,它就会变得足够灵活以满足您的需要.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有