Внедрение установщика свойства StructureMap с открытым универсальным модулем с использованием FillAllPropertiesOfType - PullRequest
1 голос
/ 06 марта 2012

У меня есть следующий класс:

public abstract class Query<TResult>
{
    protected abstract TResult Result();

    public TResult Execute()
    {
        return Result();
    }

    public ISession Session { get; set; }
}

Я хотел использовать внедрение свойства для заполнения сеанса.Это означало бы, что все, что унаследовано от Query, сможет запрашивать с помощью сеанса.

В любом случае ... Это всегда значение null: (

У меня есть следующий код реестра StructureMap:

public class MyStructureMapRegistry : Registry
{
    public MiStructureMapRegistry()
    {
        Scan(scanner =>
                 {
                    scanner.TheCallingAssembly();
                    scanner.WithDefaultConventions();
                    For<ISession>().HttpContextScoped().Use(x => x.GetInstance<ISessionFactory>().OpenSession());
                    FillAllPropertiesOfType<ISession>().Use(x => x.GetInstance<ISession>());
                 });
    }
}

Кто-нибудь может подсказать, что я делаю не так?

Спасибо

Дейв

1 Ответ

1 голос
/ 06 марта 2012

Вам нужно вызвать метод IContainer.BuildUp () для инициализации свойств объекта.

Пример:

public void PerformQuery<TResult>()
{
    var query = ObjectFactory.GetInstance<Query<TResult>>();
    ObjectFactory.BuildUp(query);
    return query.Execute();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...