1

我期望这样做:Microsoft Unity-解决问题

container.Resolve();

当它做到这一点时,它将向基础实体对象注入一个IDependency。但是,存储在容器中的依赖项需要DependencyValue类型的对象,该对象从DependencyFactory中提供一个值。长话短说,我遇到的问题是,当Unity创建实现IDependency的类的实例时,我需要接管并在容器中插入自定义值。

这是可能的,或者是我最好的选择在容器上使用RegisterInstance并手动实例化对象?我更喜欢使用配置文件来存储映射,然后为参数实例化添加一些逻辑。那是什么ParameterOverrides是做什么的?或者我需要为此添加扩展名,或者是什么?

谢谢。

回答

1

你为什么不使用静态工厂延期?

var container = new UnityContainer(); 
container.AddNewExtension() 
     .Configure() 
     .RegisterFactory(container => 
          DependencyFactory.GetValue()); 
+0

是的,这就是我一直在寻找。不知道该功能是否存在。谢谢你的提示。 – 2010-09-29 12:39:36

+1

如果您使用的是Unity 2.0,则更容易,可以这么做:container.RegisterType (new InjectionConstructor(c => DependencyFactory.Create());不需要扩展或单独的配置步骤。 – 2010-09-29 15:42:10

0

如果您通过其接口在容器中注册DependencyFactory的实现(通过代码或配置),该怎么办?然后你会得到注入的DependencyFactory,并简单地向它请求必要的对象。

除非我不正确地理解这个场景,你的类有一个依赖项,这个依赖项在运行时通过工厂来确定。由于这正是Unity所做的,您可以使用正确的实例注册(例如使用ID)来将Unity用作DependencyFactory。

我希望这会有所帮助。

感谢, 达米安