2017-08-02 20 views
0

私は2つのプロジェクトを持っています。そのうちの1つはWeb APIで、も​​う1つは共有プロジェクトです。サービスを登録するには、共有プロジェクトからタイプを取得する方法

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

ただし、共有プロジェクトのサービスは登録されていません。

共有プロジェクトからタイプを取得するにはどうすればよいですか?

+0

typeof(IService);クラスではないインターフェイスのタイプを取得していることを意味します。インターフェイスまたはクラスが必要なサービスタイプは確かですか? –

+0

私はIServiceを継承するすべてのインターフェイスが必要だと確信しています – nelly2k

+0

this.httpsを確認するのに役立つかもしれません://stackoverflow.com/questions/34741727/example-of-using-shared-services-prism –

答えて

0

わからない私の解決策は十分かどうかエレガントですが、私は

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

と共有プロジェクトにヘルパークラスを入れて、それは私が望んでいたものを私に与えました。

1

共有プロジェクトで定義されているタイプは、WebApiプロジェクトのコンパイル済みアセンブリにあります。

共有プロジェクトを参照するプロジェクトをビルドする場合、共有プロジェクトのソースは、別のアセンブリではなく、参照しているプロジェクトの一部であるかのようにコンパイルされます。

共有プロジェクトにIServiceを実装するServiceImplクラスがある場合、コンパイルされたWebApiアセンブリによって公開されます。

コンパイルされたアセンブリで型が見つからない場合は、他の場所に問題があります。多分リファレンスが見当たらないのでしょうか?ビルドに失敗し、実行されるコードが最新でない可能性がありますか?

関連する問題