【发布时间】:2019-01-22 16:18:37
【问题描述】:
我有以下具有公共属性 _variableHandler 的辅助类。该属性是公共的,因为我最初设想在涉及 XAMLHelper 类中的方法之前从调用代码设置属性,但现在怀疑这是一种聪明的方法。主要是因为我需要经常调用这个类,而不是总是更新 _variableHandler 的值,这意味着事情会变得一团糟。
public class XAMLHelper
{
public IVariableTypeHandler _variableHandler;
public XAMLHelper()
{
}
}
我还有一个工厂,用于提供所需的 VariableTypeHandler 的具体实例。
我还使用 IoC 容器 (Unity) 来提供 XAMLHelper 类的单个实例,如下所示。
container.RegisterInstance<XAMLHelper>(new XAMLHelper());
理想情况下,我想保留这个单一实例,但只需在使用如下代码指定时更新 _variableHandler 的值。
container.Resolve(new PropertyInjection(VariableHandlerFactory.GetInstance("Str")));
我试过在容器注册中加入sn-ps,比如一个
new InjectionProperty()
但这似乎不会在第一次实例化后更新 _variableHandler 属性。我在这里错过了一些重要的事情吗?或者尝试做一些 IoC 容器无法完成的事情?
【问题讨论】:
-
VariableHandlerFactory.GetInstance("Str")是否返回IVariableTypeHandler的实例?另外我认为您需要使用[Dependency]属性注释属性...
标签: c# design-patterns inversion-of-control unity-container property-injection