2008-11-20 5 views
1

Мы используем интерфейсы для представления классов сущностей в нашей модели домена. У нас есть конкретные реализации этих решений в силу использования LinqToSql. Мы добавили фабричный метод к каждому классу LinqToSql, который использует наш сервисный уровень для создания нового объекта (обратите внимание, в отличие от этого атрибута DataBind контроллера).Как получить DataBinder/SmartDispatcherController от MonoRail для привязки к типам, содержащим свойства, которые являются интерфейсами?

Реализация DataBinder по умолчанию в MonoRail игнорирует свойства, которые определены как интерфейсы.

В идеале мы не хотим создавать экземпляры наших классов уровня данных в MonoRail - вся суть интерфейсов заключается в том, чтобы отделить эти проблемы.

Кроме того, мы действительно не хотим создавать другой набор конкретных классов, не связанных с LinqToSql, единственной задачей которых является перевод между слоями.

Это конец действительно длинный день здесь; пожалуйста, кто-то может помиловать и указать нам на части IDataBinder, что мы должны перегружать нашими собственными реализациями или намекать на другие подходы, которые мы могли бы попытаться сделать? ;-)

ответ

0

Как указал Кен, ваша идея может быть реализована с помощью специального IParameterBinder.

Решение будет использовать МОК:

  • решительность конкретный экземпляр формы из его интерфейс
  • затем использовать IDataBinder для связывания экземпляра запроса Params

Еще один бы используйте IDictionaryAdapter:

  • создать прокси-сервер dto для вашего интерфейса
  • затем использовать IDataBinder связать экземпляр DTO прокси для запроса PARAMS

NB: вариант второй не будет работать, если интерфейс:

  • не является публичным (гул)
  • имеет методы
  • или события
  • или только для чтения свойства
  • или setonly свойства

Последнее, я не знаю, в чем проблема, связанная с конкретным классом в подписи контроллера.

Я сам использовать конкретную форму в контроллерах, реализующих интерфейс, определенный в сфере услуг прикладного уровня, это позволяет мне иметь проблемы, разделенные с обеих сторон:

  • сторона контроллер Http отображения и первой проверки данных уровня формы/команда
  • услуги прикладного уровня является бизнес-проверка и обработка формы/команд
+0

в то время я совершал грех связываясь с моими классами сущностей непосредственно, которые произошли с сопрягаться. Я прекратил это делать ;-) – 2010-01-27 08:58:08

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

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