.NET / StructureMap — краткий справочник для работы (2/3)

Продолжение первого поста о StructureMap

В первой части были освещены темы:

  • Установка
  • Регистрация (Основа, Профили, Плагины, Сканирование, Внедрение)

В этой части пойдет речь о:

  • Конструкторы (Простые типы, Конструктор по умолчанию, Составные типы, Приведение типов, Задание аргументов)
  • Свойства (Простое задание свойств, Встроенное задание свойств, Задание свойств фреймворком, Допостроение существующих классов)
  • Время жизни

Конструкторы

Очень важный вопрос в реальном программировании применительно к разрешению зависимостей в IoC контейнерах, как быть с классами, у которых несколько конструкторов. Как их инициализировать, как задавать параметры, как дорабатывать и прочее и прочее. Надеюсь что на большинство вопросов ниже будет дан ответ. StructureMap действительно мощная и гибкая штука.

Перед тем как начать описывать возможности фреймворка, надо поговорить о тестовых классах. В этот раз они будут сложнее. Наследование, конструкторы с простыми типами, с составными.

Итак, пусть у нас будут следующие классы:

public interface IClassA : IClass {
     int A { get; set; }
}

public interface IClassB : IClass {}

public class ClassA : IClassA {
    public int A { get; set; }
    public int B { get; set; }
    public Class1 Class1 { get; set; }

    [DefaultConstructor]
    public ClassA() {}

    public ClassA(int a) {
         A = a;
    }
}

public class ClassB : IClassB {
     public IClassA ClassA;

     public ClassB(IClassA classA) {
         ClassA = classA;
     }
}

public class ClassM : IClassA {
    public int A { get; set; }

    public ClassM(int a) {
        A = a;
    }

    public ClassM(int a, int b) {
        A = a + b;
    }
}

Они с некоторой избыточностью на данный момент, которая пригодиться чуть дальше в повествовании.

Итак, начнем с самых простых вариантов.

Рубрика: Habr