2016-06-11 10 views
0

私のアプリケーションでは、ユニティコンテナXML設定ベースのコンストラクタインジェクションを使用しています。いくつかの実行時の値をコンストラクタに渡す必要があります。私はXMLの設定を使用しているので、コードでそれをしなければ何もできませんか?実行時の値を持つ単一のコンテナコンストラクタインジェクション

public Calculator(DateTime businessDate) 
     { 
      _businessDate = businessDate; 
     } 
//Calculator is instantiated using unity container and mapped in config file. 
//How to pass businessDate at run-time? 

ありがとう!!!あらかじめ。

答えて

0

XML configsの意味は? app.configまたはweb.configを使用していて、businessDateが設定ファイルに格納されている場合は、その目的でsystem.Configuration.ConfigurationManagerクラスを使用できます。

<AppSetting> 
<add key="businessDate" value="22/12/1786"> 
</AppSetting> 

DateTime newdt = DateTime.ParseExact(ConfigurationManager.AppSetting["businessDate"], "dd/MM/yyyy", CultureInfo.InvariantCulture); 
new Calculator(newdt); 

EDIT:あなたのコメントあたり、あなたは...うん、XML設定によって、私は唯一のapp.config意味タイプに応答のための

// Register type 
DateTime newdt = DateTime.ParseExact(ConfigurationManager.AppSetting["businessDate"], "dd/MM/yyyy", CultureInfo.InvariantCulture); 

YourContainer.RegisterInstance<DateTime>("newdt", newdt); 


YourContainer.RegisterType<Calculator>(new InjectionConstructor(YourContainer.Resolve<DateTime>("newdt"))); 
+0

感謝を登録することでこの問題を解決することができます。実行時にbusinessDateが変更されるとアプリの設定に保存できません。静的ではありません。 – Deepak

+0

また、私は、ユニティコンテナを使用してCalculatorクラスをインスタンス化し、新しいCalculator()を実行していないと言っています。 – Deepak

+0

'new'が例です。そのような場合は、設定ファイルには一切格納しないでください。むしろ、 'static'変数に格納することを検討するか、より良い永続性をDBに格納したい場合には、それを考慮してください。 – Rahul

関連する問題