2011-12-15 16 views
3

私はMS Unityの設定に助けが必要です。ユニティコンテナ、インターフェイス無限ループ

public class ProjectService : IProjectService 

この構成では正常に動作:私はインタフェースを実装するクラス有する

I他、キャッシング、実装

_conainer.RegisterType<IProjectService, ProjectService>(); 

を、私はキャッシュに注入第1の具体タイプが必要コンクリートタイプ。

public class CachedProjectService : IProjectService 
{ 
    public CachedProjectService(IProjectService projectService, ICacheStorage cacheStorage) 
    {} 
} 

最初に実装されたキャッシングバージョンを返すようにUnityを設定するにはどうすればよいですか?

答えて

3

それは、あなたがこのように達成することができますデコレータ配線と呼ばれています:

_container.RegisterType<IProjectService, ProjectService>("innerService"); 

_container.RegisterType<IProjectService, CachedProjectService>(
    new InjectionConstructor(
     new ResolvedParameter<IProjectService>("innerService"), 
     new ResolvedParameter<ICacheStorage>() 
    )); 

が、それはその場で

+0

PERFECTトーマス...右のホープ! –

+0

私はそれが助けてうれしいです:) –

+0

ちょうどIoCとその素晴らしいから始まった... :) –