Допустим, у меня есть следующее:
public interface IDoStuff
public class DoerOfStuff : IDoStuff
public class RandomClass
{
public IDoStuff Doer {get; set; }
...
}
Предполагая, что RandomClass
имеет только конструктор по умолчанию (и мы хотели бы сохранить его таким), мои вопросы:
- Как я могу загрузить StructureMap так, чтобы
Doer
in RandomClass
автоматически подключался к DoerOfStuff
?
- Как сделать его более универсальным, чтобы любой класс, имеющий свойство
IDoStuff
, автоматически связывался с DoerOfStuff
?
- Как я могу сделать
DoerOfStuff
синглтоном?
Заранее спасибо!
Примечание: я предполагаю, что это возможно с StructureMap, так что в идеале ответ покажет это. Если по какой-то причине вы знаете, что это не так, пожалуйста, не стесняйтесь показать, как вы это сделаете с другим контейнером.
Приветствия
-Sean
РЕДАКТИРОВАТЬ:
Вот как я смог заставить его работать:
ObjectFactory.Initialize(x =>
{
x.For<IDoStuff>().Singleton().Use<DoerOfStuff>();
x.SetAllProperties(policy => policy.TypeMatches(type => type == typeof(IDoStuff)));
// this works too
// x.FillAllPropertiesOfType<IDoStuff>();
});
В любом случае, это работало, только если я добавил следующее:
public RandomClass()
{
ObjectFactory.BuildUp(this);
}
Мне все еще интересно, могу ли я как-то пропустить BuildUp()
.