簡體   English   中英

具有運行時值的C#統一容器構造函數注入

[英]c# unity container constructor injection with run-time value

我在我的應用程序中使用基於統一容器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?

謝謝!!! 提前。

XML configs是什么意思? 如果您正在使用app.configweb.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);

編輯:根據您的評論,您可以通過注冊類型來解決此問題

// 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")));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM