Автоустановки с использованием StructureMap - PullRequest
2 голосов
/ 09 марта 2012

Допустим, у меня есть следующее:

public interface IDoStuff 

public class DoerOfStuff : IDoStuff

public class RandomClass
{
    public IDoStuff Doer {get; set; }
    ...
}

Предполагая, что RandomClass имеет только конструктор по умолчанию (и мы хотели бы сохранить его таким), мои вопросы:

  1. Как я могу загрузить StructureMap так, чтобы Doer in RandomClass автоматически подключался к DoerOfStuff?
  2. Как сделать его более универсальным, чтобы любой класс, имеющий свойство IDoStuff, автоматически связывался с DoerOfStuff?
  3. Как я могу сделать 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().

1 Ответ

0 голосов
/ 09 марта 2012
new Container(x => {
 x.For<IDoStuff>().Singleton().Use<DoerOfStuff>();
 x. FillAllPropertiesOfType<IDoStuff>();
})
...