У меня есть два класса, один из которых устанавливает контейнер, регистрируя типы и тот, который содержит статическое свойство, которое я хочу ввести. Моя проблема заключается в том, что свойство никогда не устанавливается путем инъекции, поэтому, когда я вызываю метод на нем, свойство всегда равно нулю.Unity Static Property Injection
public class ClassOne
{
public void Method()
{
Container.RegisterType<IClass, ClassImplOne>("ImplOne");
Container.RegisterType<IClass, ClassImplTwo>("ImplTwo");
}
}
public static class ClassTwo
{
[Dependency]
public static IClass SomeProperty { get; set; }
public static void SomeOtherMethod()
{
SomeProperty.AnotherMethod();
}
}
Если удалить атрибут зависимостей и в ClassOne сделать простой
ClassTwo.SomeProperty = Container.Resolve<IClass>("ImplOne");
он прекрасно работает, но я хочу знать, если это возможно сделать это без явного присвоения значения свойству (т. е. может ли контейнер вводить через атрибуты)?
Редактировать:
Thanks. Я удалил статическую декларацию от ClassTwo и ClassOne добавил RegisterType и Resolve для ClassTwo, а также добавил InjectionProperty:
Container.RegisterType<IClass, ClassImplOne>("ImplOne", new InjectionProperty("SomeProperty"));
, но он по-прежнему не работает: S
Отредактированный мой ответ, чтобы быть более точным. – jlvaquero