c# - 如何获取解决方案项目中的所有类型?
问题描述
我有一个解决方案和多个 .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
层
推荐阅读
- python - 梯度值为零的除 GradientDescentOptimizer tensorflow 以外的优化器
- node.js - gps模块停止输出信息
- excel - Excel VBA用户窗体用按钮打开超链接
- php - 重力形式有条件的必填字段
- oracle - 将 TOAD 数据建模器与现有 TOAD Oracle 结合使用
- ruby-on-rails - Rails 4 InvalidCrossOriginRequest 错误
- r - 在不使用极坐标的情况下将极地背景添加到 ggplot
- airflow - 确定 DAG 是否正在执行
- angular - Angular CLI 根据特定模块/页面加载外部样式和脚本
- python - 如果仅指定行索引,则使用嵌套 dict 初始化的 Pandas DataFrame 失败