Wie Schloss Monorail der Databinder / SmartDispatcherController zu binden, gegen die Typen enthalten Eigenschaften zu erhalten, die Schnittstellen sind?

StackOverflow https://stackoverflow.com/questions/306103

Frage

Wir sind mit Schnittstellen Entitätsklassen in unserem Domain-Modell darzustellen. Wir haben konkrete Implementierungen von diesen durch LinqToSql verwenden. Wir haben eine Factory-Methode zu jeder LinqToSql Klasse hinzugefügt, die unsere Service-Schicht eine neue Einheit zu instanziiert verwendet (beachten Sie, wie Sie zu dem DataBind Attribute des Controllers gegen es zu tun).

Monorail-Standarddatabinder Implementierung ignoriert Eigenschaften, die als Schnittstellen definiert sind.

Im Idealfall wollen wir nicht unsere Daten-Layer-Klassen in Monorail instanziiert - der ganze Sinn der Schnittstellen ist diese Bedenken zu trennen.

Auch wir wollen nicht wirklich eine andere Gruppe von Nicht-LinqToSql konkreten Klassen, deren einzige Aufgabe zu erstellen, ist zwischen den Schichten zu übersetzen.

Es ist das Ende eines wirklich langen Tages hier; bitte kann jemand erbarmen und uns an den Teilen IDataBinder hinweisen, dass wir mit unseren eigenen Implementierungen oder verweisen auf andere Ansätze überlasten sollten wir versuchen könnte? ; -)

War es hilfreich?

Lösung

Sie sollten bei IParameterBinder suchen. einen Blick auf ein Beitrag habe ich über das Thema geschrieben haben

Andere Tipps

Wie Ken zeigte, Ihre Idee mit einem benutzerdefinierten IParameterBinder umgesetzt werden könnte.

Eine Lösung wäre IOC zu verwenden:

  • lösen konkrete Instanz des Formulars von ihm Schnittstelle ist
  • dann IDataBinder verwenden, um die Instanz auf die Anfrage params zu binden

Ein anderer würde IDictionaryAdapter werden:

  • erzeugen einen dto Proxy für Ihre Schnittstelle
  • dann IDataBinder verwenden, um die dto Proxy-Instanz auf die Anfrage params zu binden

NB: zweite Option wird nicht funktionieren, wenn Schnittstelle:

  • ist nicht öffentlich (hum)
  • hat Methoden
  • oder Ereignisse
  • oder Nur-Lese-Eigenschaften
  • oder setonly Eigenschaften

Zuletzt, ich bin nicht sicher, was das Problem ist konkrete Klasse in Controller Unterschrift aussetzt.

ich mich konkret in Controller verwenden Schnittstelle in der Anwendungsschicht Dienste definiert Implementierung erlaubt es mir Bedenken auf beiden Seiten getrennt zu haben:

  • Steuerungsseite ist Http-Mapping und erste Ebene Datenvalidierung der Form / command
  • Anwendungsschicht Dienste ist Business-Validierung und Verarbeitung der Form / command
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top