2010-08-27 49 views
1

使用Unity,是否可以通過名稱註冊參數?我的用例如下。我想註冊一個名爲「asOfDate」的DateTime類型的值,以便對於任何對DateTime具有依賴關係並且名稱爲「asOfDate」的構造函數參數的類型,Unity將提供等於註冊值的DateTime實例在Unity中按名稱註冊參數

回答

1

不,這是不可能的。 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"));