0

Мне нужно разрешить вложение свойств на основе PropertyInfo.Name. Класс выглядит следующим образомПолитика разрешения собственности

public class Test 
{ 
    [Dependency] 
    public Test TestProperty1{ get; set; } 
} 

Я хочу, чтобы какой-то образом быть в состоянии решить TestProperty1 как этот за кулисами, без явного перепечатывания имени свойства.

container.Resolve<Test>("TestProperty1") 

Во время вызова либо container.Resolve<Test>() или container.BuildUp(new Test()) **

Как я могу это сделать?

+0

С вашим дизайном что-то не так. Разрешение 'Test', вероятно, вызовет исключение переполнения стека, поскольку оно зависит от самого себя. Какую проблему ты пытаешься решить? – Steven

ответ

0

Я не уверен, понимаю ли я, чего вы пытаетесь достичь. Вы хотите, чтобы Unity заполнила TestProperty1, не сказав этого?

Использование DependencyAttribute не является хорошим выбором. This article explains why.

Поручить Unity, чтобы ввести значение в TestProperty1 вы должны изменить код регистрации:

container.RegisterType<Test>(new InjectionProperty("TestProperty1")); 

Вызов разрешить возвращает экземпляр Test с TestProperty1 наполненной.

Если у вас есть существующий экземпляр Test, то вызов container.BuildUp() также будет вводить некоторое значение в TestProperty1.

Смежные вопросы