Предоставление имени метода вместо конкретного имени класса в карте структуры
У меня есть класс ScreenParameter (реализовать IScreenParameter), который хранит все значения формы в форме окна. Этот класс инициируется, когда пользователь заполняет все поля и нажимает кнопку. Класс в Bussiness Layer ожидает IScreenParameter в своем конструкторе. Я использую Структурную карту, чтобы ввести интерфейс, и он должен быть создан в его контексте. У меня есть метод (GetScreenParameters), который создает и заполняет интерфейс. Я хочу дать имя метода вместо конкретного класса при настройке структуры карты и попробовал это.
ObjectFactory.Initialize(initialize =>
{
initialize.For<IScreenParameter>().Use(GetScreenParameters);
});
Но это не работает. Не могли бы вы помочь, как этого добиться?
1 ответ
Предполагая, что код вызывается из экземпляра Form
класс, содержащий GetScreenParameters
Метод можно использовать следующий синтаксис:
initialize.For<IScreenParameter>().Use(() => GetScreenParameters());
Это приведет к тому, что метод GetScreenParameters будет вызываться каждый раз, когда вы хотите получить экземпляр IScreenParameter
, Если вы хотите один и тот же экземпляр каждый раз, вы сможете зарегистрировать его как одиночный с:
initialize.For<IScreenParameter>().Use(GetScreenParameters());