2012-01-27 1 views
0

У меня есть класс ScreenParameter (реализация IScreenParameter), который хранит все значения форм в форме окна. Этот класс запускается, когда пользователь заполняет все поля и нажимает кнопку. Класс в Bussiness Layer ждет IScreenParameter в своем конструкторе. Я использую Структурную карту для ввода интерфейса, и его необходимо создать в контексте. У меня есть метод (GetScreenParameters), который создает и заполняет интерфейс. Я хочу дать имя метода вместо класса concreate при настройке Структурной карты и попробовал это.Дать имя метода вместо имени конкретного класса в Структурная карта

ObjectFactory.Initialize(initialize => 
     { 
      initialize.For<IScreenParameter>().Use(GetScreenParameters); 

     }); 

Но это не работает. Можете ли вы, пожалуйста, помочь, как достичь этого?

+0

Где GetScreenParameters находится (в каком классе) и это метод члена или метод класса (статический)? Представляет ли GetScreenParameters какие-либо параметры? – PHeiberg

+0

Нет, это не статично. GetScreenParameters находится в Form.cs и возвращает IScreenParameter, код выше запускается на Form.cs Ctor. – londondev

ответ

0

Предполагая, что код вызывается из экземпляра Form класса, который, содержащего метод GetScreenParameters вы можете использовать следующий синтаксис:

initialize.For<IScreenParameter>().Use(() => GetScreenParameters()); 

Это вызовет метод GetScreenParameters называть каждый раз, когда вы хотите получить экземпляр IScreenParameter. Если вы хотите, тот же экземпляр каждый раз, когда вы должны быть в состоянии зарегистрировать его как синглтон с:

initialize.For<IScreenParameter>().Use(GetScreenParameters()); 
+0

К сожалению, это не сработало. Да, код вызывается в конструкторе форм, который также содержит класс GetScreenParameter. – londondev

+0

Я думаю, вам нужно дать немного больше информации о том, что вы подразумеваете под «не работает». Предоставляет ли она компиляцию или ошибку времени выполнения? Если да, то какая ошибка вы получаете? Я тестировал версию с голыми костями и работал на моей машине. :-) – PHeiberg

+0

Да, это исключает, когда я назвал «ObjectFactory.BuildUp (this)» в форме Ctor. В нем указано, что для параметра PluginFamily не определено значение по умолчанию .IHYSDataBL. Когда я прокомментировал ваш код, IHYSDataBL создается в контейнере Structure Map. – londondev

 Смежные вопросы

  • Нет связанных вопросов^_^