2016-07-01 10 views
0

Unityを使用して2つの部分クラスの依存関係を注入する際に問題が発生しています。これは私がやったことです:ユニティコンテナを部分クラスで解決する

public partial class MyDbContext : IMyDbContext 
{ 
    // code 
} 

public partial class MyDbContext : IMyDbContext 
{ 
    // code 
} 

public interface IMyDbContext 
{ 
    // code 
} 

var container = new UnityContainer(); 
container.RegisterType<IMyDbContext,  
MyDbContext>(new HierarchicalLifetimeManager()); 
config.DependencyResolver = new UnityResolver(container); 

上記のコードを使用すると、私はdbがnullであるという例外が発生します。しかし、私が部分クラスを1つ取り除くと、部分クラスが1つしかないので、すべて正常に動作します。私はあなたがこれで喜ぶことができれば非常にappreaciteだろう。

EDIT: デバッグモードでは、ユニットコンテナのGetServiceメソッドが例外ResolutionFailedExceptionをキャッチします。

答えて

0

この問題は、タイプではなくインスタンスを登録することで解決しました。 しかし、他の解決策を歓迎します。

var container = new UnityContainer(); 
MyDbContext context = new MyDbContext() 
container.RegisterInstance<IMyDbContext>(context); 
config.DependencyResolver = new UnityResolver(container); 
0

インターフェイスの1つを削除します。部分クラスの1つがそれを実装するので、他のクラスはそうすることができません。部分クラスは1つのクラスにまとめてコンパイルされるので、両方の部分クラスが同じインタフェースを実装することはできません。

+0

ありがとうございました。部分的なクラスからインターフェースを削除しようとしている場合は、すでに試してみましたが、まだ動作しません。 – Doro

関連する問題