Как проинициализировать зависимостями уже созданный объект (C#, Spring.NET) - CodeHelper

Как проинициализировать зависимостями уже созданный объект (C#, Spring.NET)

2

Имеется класс:

public FooClass
{
    public Dependency1 { get; set; }

    public Dependency2 { get; set; }

    public FooClass(Dependency3 dep3, Dependency4 dep4)
    {
        // ...
    }
}

Суть в том что объект этого класса должен получить два типа зависимостей:

  • Зависимости, которые передаются в конструктор — это динамические зависимости, которые неизвестны во время создания applicationContext
  • Зависимости, которые передаются в свойства — это статические зависимости и они должы получаться из ioc-контейнера (applicationContext).

В нужном месте кода я создаю новый объект класса FooClass, передавая ему динамические зависимости:

var foo = new FooClass(dep3, dep4);

Вопрос состоит в том, как имея объект foo и applicationContext проинитиализировать foo статическими зависимостями. То есть как заставить applicationContext инжектить зависимости в уже созданный объект?

Лучший ответ:

1

Нужно использовать метод ConfigureObject контекста. Например так:

ContextRegistry.GetContext().ConfigureObject(targetObject, objectName);

Где targetObject — объект, кторый нужно сконфигурировать; objectName — имя прототипа этого объекта в контейнере.

Новые ответы


0

Может стоит рассмотреть вариант изменения класса с точностью до наоборот? Т.е. вынесения динамических зависимостей в свойства, а статических — в конструктор. В этом случае можно будет получать объект с набором "свойств по-умолчанию" из ApplicationContext и в коде присваивать свойствам нужные динамические зависимости.

Чак Норрис

Можно и так, но это будет не совсем удобно в контексте задачи.


v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.