0
註冊只有數據參數的服務很容易。SimpleInjector:註冊具有數據參數和相關性的類
string emailHost = "emailHost";
int emailPort = 25;
string emailFrom = "[email protected]";
container.Register<IEmailManager>(
() => new EmailManager(emailHost, emailPort, emailFrom),
Lifestyle.Singleton);
但我怎麼做,如果該類/服務有數據paramters,和注入服務?我怎樣才能將SmsNumberFormatter
註冊爲SmsManager
,它仍然通過ctor提供短信配置數據?
string smsAccountSid = "sid";
string smsAuthToken = "token";
string smsFromNumber = "##########";
container.Register<ISmsNumberFormatter, SmsNumberFormatter>(
Lifestyle.Singleton);
container.Register<ISmsManager>(
() => new SmsManager(
new SmsNumberFormatter(), smsAccountSid, smsAuthToken, smsFromNumber),
Lifestyle.Singleton);
SimpleInjector:v 3.3.2.0
我投第二個選項。不僅更清潔,而且允許Simple Injector使用其[Diagnostic Services](https://simpleinjector.org/diagnostics)繼續分析您的對象圖。 – Steven
感謝您的詳細回覆,以不同的方式處理此問題! – contactmatt
我甚至會讓'SmsManagerOptions'不可變,只讀屬性和接受所需值的構造函數。這可以防止'SmsManagerOptions'在發生故障的狀態下被初始化。 – Steven