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

asp.net-core – ASP.NET核心查找所有程序集中的所有类类型

发布时间:2020-12-15 18:58:25 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试制作基于模块的.NET核心应用程序,我需要在所有程序集中查找特定类型的所有类.因为每个模块都将构建在自己的项目中. 但我无法在ASP.NET Core中看到/找到如何做到这一点?任何指针将不胜感激. 解决方法 要从一个程序集加载所有类,请参阅下面的代码.
我正在尝试制作基于模块的.NET核心应用程序,我需要在所有程序集中查找特定类型的所有类.因为每个模块都将构建在自己的项目中.

但我无法在ASP.NET Core中看到/找到如何做到这一点?任何指针将不胜感激.

解决方法

要从一个程序集加载所有类,请参阅下面的代码.在我的案例中,IProfile是我需要搜索的界面
var all = Assembly
        .GetEntryAssembly()
        .GetReferencedAssemblies()
        .Select(Assembly.Load)
        .SelectMany(x => x.DefinedTypes)
        .Where(type => typeof(IProfile).GetTypeInfo().IsAssignableFrom(type.AsType()));    

foreach (var ti in all)
{
   var t = ti.AsType();
   if (t.Equals(typeof(IProfile)))
   {

   }
}

嗨leen3o,如果您有外部程序集或插件,您可以通过从程序集列表中迭代来获取所有类型.
在下面的代码“GlobalConfiguration.Modules”中包含我的插件列表

List<Type> typeToRegisters = new List<Type>();  
    foreach (var module in GlobalConfiguration.Modules)
    {
    typeToRegisters.AddRange(module.Assembly.DefinedTypes.Select(t => t.AsType()));
          }     

    var entity-types = typeToRegisters.Where(x =>  x.GetTypeInfo().IsSubclassOf(typeof(IBaseDomainEntity)) &&  !x.GetTypeInfo().IsAbstract);

这里“IBaseDomainEntity”是我正在寻找的界面.我唯一关心的是效率,我没有检查过

(编辑:李大同)

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

    推荐文章
      热点阅读