Как получить StructureMap для возврата конкретного экземпляра для запрошенного типа - PullRequest
3 голосов
/ 16 декабря 2008

Я хочу зарегистрировать конкретный экземпляр объекта для типа в Structuremap, как я могу это сделать?

Например,

Когда я делаю:

var myObj = ObjectFactory.GetInstance(typeof(MyAbstractClass));

я бы хотел вернуть ранее сконструированный конкретный класс, который я создал следующим образом:

var myClass = new MyConcreteClass("bla"); // MyConcreteClass : MyAbstractClass

так

myObj == myClass

Как мне зарегистрировать myClass в Structuremap, чтобы облегчить это?

Спасибо

Andrew

Ответы [ 3 ]

6 голосов
/ 16 декабря 2008

Я полагаю, вы бы сделали это при инициализации

        ObjectFactory.Initialize(x =>
        {
            x.ForRequestedType<MyAbstractClass>().TheDefault.IsThis(myClass);
        });

Где myClass - это экземпляр объекта, который вы хотите вернуть.

4 голосов
/ 21 декабря 2008

Вы можете добавить конкретный экземпляр по умолчанию

ObjectFactory.Inject(typeof(MyAbstractClass), myClass);
1 голос
/ 31 июля 2014

В StructureMap 3 методы изменились, и этот код теперь работает:

var emailService = new EmailService(ConfigurationManager.AppSettings[mykey]);

ObjectFactory.Initialize(x =>
{                
    x.For<IEmailService>().Use(emailService);
});
...