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

前端之家收集整理的这篇文章主要介绍了asp.net-core – ASP.NET核心查找所有程序集中的所有类类型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试制作基于模块的.NET核心应用程序,我需要在所有程序集中查找特定类型的所有类.因为每个模块都将构建在自己的项目中.

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

解决方法

要从一个程序集加载所有类,请参阅下面的代码.在我的案例中,IProfile是我需要搜索的界面
  1. var all = Assembly
  2. .GetEntryAssembly()
  3. .GetReferencedAssemblies()
  4. .Select(Assembly.Load)
  5. .SelectMany(x => x.DefinedTypes)
  6. .Where(type => typeof(IProfile).GetTypeInfo().IsAssignableFrom(type.AsType()));
  7.  
  8. foreach (var ti in all)
  9. {
  10. var t = ti.AsType();
  11. if (t.Equals(typeof(IProfile)))
  12. {
  13.  
  14. }
  15. }

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

  1. List<Type> typeToRegisters = new List<Type>();
  2. foreach (var module in GlobalConfiguration.Modules)
  3. {
  4. typeToRegisters.AddRange(module.Assembly.DefinedTypes.Select(t => t.AsType()));
  5. }
  6.  
  7. var entity-types = typeToRegisters.Where(x => x.GetTypeInfo().IsSubclassOf(typeof(IBaseDomainEntity)) && !x.GetTypeInfo().IsAbstract);

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

猜你在找的asp.Net相关文章