2017-08-02 66 views
0

我有两个项目,其中一个是Web API,另一个是共享项目。要注册我的服务我使用:如何从共享项目中获取类型

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

但是,来自共享项目的服务没有获得注册。

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

+0

typeof(IService);意味着你得到的不是类的接口类型。你确定服务类型是否需要接口或类? –

+0

我很确定我需要继承IService的所有接口 – nelly2k

+0

它可能有助于检查此问题.https://stackoverflow.com/questions/34741727/example-of-using-shared-services-prism –

回答

0

不知道是我的解决方案不够或不优雅,但我把Helper类到共享项目,

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

,它给了我想干什么。

1

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

当构建引用共享项目的项目时,共享项目中的源被编译为就像它们是引用它的projet的一部分,而不是在单独的程序集中。

所以如果你的共享项目中有一个实现IService的ServiceImpl类,编译后的WebApi程序集会公开它。

如果在编译后的程序集中找不到类型,那么问题就出在别处。也许参考失踪?也许构建失败,被执行的代码不是最新的?

相关问题