gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:53:41 26 4
gpt4 key购买 nike

我正在尝试制作一个基于模块化的 .NET 核心应用程序,并且我需要在所有程序集中查找特定类型的所有类。因为每个模块都将构建在它自己的项目中。

但是我看不到/找不到如何在 ASP.NET Core 中执行此操作?任何指示将不胜感激。

最佳答案

要从一个程序集中加载所有类,请参阅下面的代码。在我的例子中 IProfile 是我需要搜索的界面

var all = Assembly
.GetEntryAssembly()
.GetReferencedAssemblies()
.Select(Assembly.Load)
.SelectMany(x => x.DefinedTypes)
.Where(type => typeof(IProfile).IsAssignableFrom(type));

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”是我正在搜索的接口(interface)。我在这里唯一关心的是我没有检查过的效率

关于asp.net-core - ASP.NET Core 查找所有程序集中的所有类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42524704/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com