1
使用Unity,是否可以通過名稱註冊參數?我的用例如下。我想註冊一個名爲「asOfDate」的DateTime類型的值,以便對於任何對DateTime具有依賴關係並且名稱爲「asOfDate」的構造函數參數的類型,Unity將提供等於註冊值的DateTime實例在Unity中按名稱註冊參數
使用Unity,是否可以通過名稱註冊參數?我的用例如下。我想註冊一個名爲「asOfDate」的DateTime類型的值,以便對於任何對DateTime具有依賴關係並且名稱爲「asOfDate」的構造函數參數的類型,Unity將提供等於註冊值的DateTime實例在Unity中按名稱註冊參數
不,這是不可能的。 Unity不依賴於參數名稱。因此,當任何類需要DateTime作爲構造參數時,Unity容器將使用已註冊的參數,而不管參數名稱如何。
只具有某些類型的注射一種特殊的日期時間等DateTime.Now,你必須註冊通用日期時間通常的方式:
container.RegisterType<DateTime>();
特殊對象有是用名義註冊:
container.RegisterInstance<DateTime>("special", DateTime.Now);
現在,當你希望有解決的對象時,你可以按如下這個對象註冊使用了特殊的DateTime實例:
container.RegisterType<IMyType, MyType>(
new InjectionConstructor(new ResolvedParameter<DateTime>("special"));