Microsoft Unity-解决问题

时间:2010-09-28 17:49:27

标签: c# .net dependency-injection unity-container enterprise-library

我希望这样做:

container.Resolve();

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

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

感谢。

2 个答案:

答案 0 :(得分:1)

为什么不使用静态工厂扩展名?

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

答案 1 :(得分:0)

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

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

我希望这会有所帮助。

谢谢, 达米安