加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 23:51:09 所属栏目:百科 来源:网络整理
导读:我有一些代码来加载程序集并获取所有类型,实现某个接口,就像这样(假设asm是一个有效的加载程序集). var results = from type in asm.GetTypes() where typeof(IServiceJob).IsAssignableFrom(type) select type; 现在我陷入困境:我需要创建这些对象的实例并
我有一些代码来加载程序集并获取所有类型,实现某个接口,就像这样(假设asm是一个有效的加载程序集).

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

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

解决方法

哦哇 – 我前几天只有 blogged about this.这是我返回实现给定接口的所有类型的实例的方法:

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);
}

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读