我有两个项目,其中一个是Web API,另一个是共享项目。要注册我的服务,我使用:
var serviceType = typeof(IService);
var allTypes = Assembly.GetExecutingAssembly()
.GetTypes()
.Where(x => serviceType.IsAssignableFrom(x))
.ToList();
但是,共享项目的服务尚未注册。
如何从共享项目中获取类型?
答案 0 :(得分:1)
您可以在WebApi项目的已编译程序集中找到共享项目中定义的类型。
在构建引用共享项目的项目时,共享项目中的源代码将被编译为引用它的项目的一部分,而不是单独的程序集。
因此,如果您的共享项目中有一个实现IService的ServiceImpl类,则编译后的WebApi程序集将公开它。
如果在编译的程序集中找不到类型,则问题出在其他地方。也许缺少参考?也许构建失败并且执行的代码不是最新的?
答案 1 :(得分:0)
我不确定我的解决方案是否足够优雅,但我将Helper类放入与
共享的项目中var serviceType = typeof(IService);
var allTypes = Assembly.GetExecutingAssembly()
.GetTypes()
.Where(x => serviceType.IsAssignableFrom(x))
.ToList();
它给了我想要的东西。