我希望这样做:
container.Resolve();
当它执行此操作时,它将向基础实体对象注入IDependency。但是,存储在容器中的依赖项需要一个DependencyValue类型的对象,该对象从DependencyFactory提供一个值。长话短说,我所遇到的问题是,当Unity创建实现IDependency的类实例时,我需要接管并插入不在容器中的自定义值。
这是可能的,或者我最好在容器上使用RegisterInstance并手动实例化对象?我更喜欢使用配置文件来存储映射,然后为参数实例化添加一些逻辑。这是ParameterOverrides的意图吗?或者我是否需要为此添加扩展名,或者什么?
感谢。
答案 0 :(得分:1)
为什么不使用静态工厂扩展名?
var container = new UnityContainer();
container.AddNewExtension()
.Configure()
.RegisterFactory(container =>
DependencyFactory.GetValue());
答案 1 :(得分:0)
如果您在容器中注册DependencyFactory的实现(通过代码或配置),通过其接口解析该怎么办?然后你会得到注入的DependencyFactory,只需从中请求必要的对象。
除非我不正确地理解场景,否则您的类具有依赖性,该依赖性在运行时通过工厂确定。由于这正是Unity所做的,您可以使用正确的实例注册(例如使用ID)将Unity用作DependencyFactory。
我希望这会有所帮助。
谢谢, 达米安