如何从共享项目中获取类型

时间:2017-08-02 06:17:01

标签: c# .net

我有两个项目,其中一个是Web API,另一个是共享项目。要注册我的服务,我使用:

var serviceType = typeof(IService);
        var allTypes = Assembly.GetExecutingAssembly()
            .GetTypes()
            .Where(x => serviceType.IsAssignableFrom(x))
            .ToList();

但是,共享项目的服务尚未注册。

如何从共享项目中获取类型?

2 个答案:

答案 0 :(得分:1)

您可以在WebApi项目的已编译程序集中找到共享项目中定义的类型。

在构建引用共享项目的项目时,共享项目中的源代码将被编译为引用它的项目的一部分,而不是单独的程序集。

因此,如果您的共享项目中有一个实现IService的ServiceImpl类,则编译后的WebApi程序集将公开它。

如果在编译的程序集中找不到类型,则问题出在其他地方。也许缺少参考?也许构建失败并且执行的代码不是最新的?

答案 1 :(得分:0)

我不确定我的解决方案是否足够优雅,但我将Helper类放入与

共享的项目中
var serviceType = typeof(IService);
    var allTypes = Assembly.GetExecutingAssembly()
        .GetTypes()
        .Where(x => serviceType.IsAssignableFrom(x))
        .ToList();

它给了我想要的东西。