2010-08-27 101 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"));