如何获取解决方案项目中的所有类型?
How to get all types in solution projects?
我有一个解决方案和多个 .net 核心项目。
- 项目(解决方案)
- WebApi
- 商业
- 数据
WebApi
项目引用了 Business
,但没有引用 Data
项目。所以我想获得实现 IMyInterface
的解决方案中的所有类型。所有项目都有 类 实现 IMyInterface
。我要全部找到。
我在 WebApi 项目中调用以下代码:
var m = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(name => name.GetTypes())
.Where(type => typeof(IMyInterface).IsAssignableFrom(type))
.ToList();
但未找到类型。
我怎样才能找到?
你应该得到这样的所有组装项目
public Assembly[] GetAssemblies()
{
var dataAssembly = typeof(AnClassInDataLayer).Assembly;
var businessAssembly = typeof(ACLassInBusinessLayer).Assembly;
var webApiAssembly = typeof(Startup).Assembly;
return new Assembly[] { businessAssembly , dataAssembly, webApiAssembly };
}
然后
var m = GetAssemblies()
.SelectMany(name => name.GetTypes())// or .SelectMany(a => a.ExportedTypes)
.Where(type => typeof(IMyInterface).IsAssignableFrom(type))
.ToList();
更新
在 .Net Core 中,如果 WebApi
项目引用了 business
层,而 Business
层引用了 Data
层,那么在 WebApi
层中您可以访问到 Data
层
我有一个解决方案和多个 .net 核心项目。
- 项目(解决方案)
- WebApi
- 商业
- 数据
WebApi
项目引用了 Business
,但没有引用 Data
项目。所以我想获得实现 IMyInterface
的解决方案中的所有类型。所有项目都有 类 实现 IMyInterface
。我要全部找到。
我在 WebApi 项目中调用以下代码:
var m = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(name => name.GetTypes())
.Where(type => typeof(IMyInterface).IsAssignableFrom(type))
.ToList();
但未找到类型。
我怎样才能找到?
你应该得到这样的所有组装项目
public Assembly[] GetAssemblies()
{
var dataAssembly = typeof(AnClassInDataLayer).Assembly;
var businessAssembly = typeof(ACLassInBusinessLayer).Assembly;
var webApiAssembly = typeof(Startup).Assembly;
return new Assembly[] { businessAssembly , dataAssembly, webApiAssembly };
}
然后
var m = GetAssemblies()
.SelectMany(name => name.GetTypes())// or .SelectMany(a => a.ExportedTypes)
.Where(type => typeof(IMyInterface).IsAssignableFrom(type))
.ToList();
更新
在 .Net Core 中,如果 WebApi
项目引用了 business
层,而 Business
层引用了 Data
层,那么在 WebApi
层中您可以访问到 Data
层