2017-12-22 5 views
0

Structuremapでコンストラクタをチェーンする方法はありますか?私はより簡潔なコードが必要です - 基本的にコードベースのnewキーワードを取り除こうとしています。Structuremapでコンストラクタを連結する方法は?

現在、私が持っているもの:

container.Configure(c => 
{ 
    c.For<IDataContext>() 
     .Singleton() 
     .Use(new CarDataContextWrapper(new CarDataContext(Settings.Default.ConnectionString) 
     { 
      CommandTimeout = 60 
     })); 
}); 

コンストラクタのパラメータに注入するため、私は.Ctor宣言を使用したいと思います。しかし、私が初期化したい第二のクラスのためにはどうすればいいですか?

container.Configure(c => 
{ 
    c.For<IDataContext>() 
     .Use<CarDataContextWrapper>() 
     .Ctor<CarDataContext>().Is(x=>); // HOW TO SET THIS? 
}); 
+0

'CarDataContextWrapper'と' CarDataContext'両方がIDataContext' 'の実装である場合、あなたが持っているもの* *のDecoratorパターンです。それを設定する方法の例については、[StructureMap Decorator Documentation](http://structuremap.github.io/interception-and-decorators/)を参照してください。 – NightOwl888

答えて

0
container.Configure(c => 
{ 
    c.For<IDataContext>() 
     .Use<CarDataContextWrapper>("getting context", ctx=> 
     { 
      return ctx.GetInstance<CarDataContextWrapper>(); 
     }); 
     // Also need to tell SM how to build CarDataContextWrapper 
}); 
関連する問題