Предоставление имени метода вместо конкретного имени класса в карте структуры

У меня есть класс 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());
Другие вопросы по тегам