2012-12-06 24 views
8

にハードコーディングされた値を渡す:私はここでやっていることはIAuctionContextが発見された場合、この新しいAuctionContextでそれを置き換えることを言っているシンプルなインジェクターは、私は次の操作を行うことができます<a href="https://simpleinjector.org" rel="noreferrer">Simple Injector</a>では、コンストラクタ

container.RegisterSingle<IAuctionContext>(() => new AuctionContext(
    new Uri("http://localhost:60001/AuctionDataService.svc/"))); 

。問題は、RegisterSingleの呼び出しでは、AuctionContextという1つのインスタンスだけが使用されることです。上記のようにUriのパラメータで渡すことができますが、1つのインスタンスを持たず、毎回新しいインスタンスを許可できるようにしたいものです。

これはどのように可能ですか?

+0

質問を編集し、http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-be-removed-from-postsに基づいて署名を削除しました。署名の使用はお控えください。 =) –

+0

次回はこれを念頭に置いておきます。 –

答えて

18

注入しようとしている値は単純なハードコード値です。

var uri = new Uri("http://localhost:60001/AuctionDataService.svc/"); 

container.Register<IAuctionContext>(() => new AuctionContext(uri)); 

Register方法は、新しいインスタンスが毎回返される保証:ハードコードされた値と設定値のような一定の値に対して、わずかRegister方法を使用します。

アプリケーションの実行中に変更される可能性のある値を注入する場合は、this article about injecting runtime dataをお読みください。

関連する問題

 関連する問題