У меня есть следующий вспомогательный класс с открытым свойством _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")));
Я попытался добавить фрагменты в регистрацию контейнера, например
new InjectionProperty()
Но это, похоже, не обновляет свойство _variableHandler после того, как оно было создано в первый раз. Я пропустил что-то важное здесь? Или пытаетесь сделать что-то, что невозможно с контейнером IoC?
VariableHandlerFactory.GetInstance("Str")
возвращает экземплярIVariableTypeHandler
? Также я думаю, что вам нужно аннотировать свойство атрибутом[Dependency]
... - person Johnny   schedule 22.01.2019