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