Microsoft Unity-解决问题

我希望这样做:

container.Resolve();

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

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

谢谢。

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

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

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

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

我希望这有帮助。

谢谢,达米安