2012-03-26 11 views
3

Wenn Sie mit Ereignissen arbeiten, nehmen Menschen normalerweise Beispiele für sehr einfache Werte, die nur aus Primitiven bestehen. Aber was ist mit einer Veranstaltung, wo ich mehr Informationen benötigen würde. Ist es erlaubt, eine spezifische Struktur für diese Fälle zu erstellen?Nicht primitive Typen in Ereignissen

Die Carriage-Klasse ist Teil des Ereignisnamespace und hat keine komplexe Logik oder irgendetwas.

aber wenn ich ein anderes Ereignis:

public class RedTrainCleaned 
{ 
    Datetime start 
    Datetime end 
    Carriage[] Carriages 
} 

Wagen wird auch ein Teil der Schnittstelle des zweiten Ereignisses sein. Wenn wir beispielsweise 40 oder 50 Ereignisse mit demselben "Ereigniswertobjekt" angeben, bedeutet dies, dass mein Projekt stark an dieses Objekt gekoppelt wird. Es sieht nicht so gut aus, aber was könnte ich tun, um das zu vermeiden? Ist es eine Warnung, dass etwas in der Analyse meiner Domain nicht gut gemacht ist?

Dank für Ihre Hilfe,

Antwort

1

Ich denke, es hängt davon ab, wie Standard Carriage in Ihrer Domäne ist. Wenn es sich für ein Ereignis ändert, sollte es sich auch für die anderen ändern?

Ich denke, ich denke an das Beispiel Address. Es ist ziemlich Standard innerhalb einer Domäne, und ich denke, dass es sinnvoll ist, das in meinem Ereignisobjekt aufzunehmen, wenn ich ein Ereignis erstelle, das Adressinformationen enthält. Auf diese Weise, wenn es bekannt wird, dass wir eine ZIP + 4 Erweiterung für meine Postleitzahl haben müssen, kann ich ein neues Feld zu meiner Address Klasse hinzufügen und diese Eigenschaft für zukünftige Ereignisse verfügbar haben. Ich kann die Änderung an einem einzigen Ort vornehmen und für zukünftige Veranstaltungen verfügbar machen.

Wenn könnte etwas anderes über verschiedene Ereignisse bedeuten, dann ist es vielleicht nicht etwas, was Sie sollten - und stattdessen, flacht es in Ihrem Fall. Aber wenn wirklich eine ubiquitäre Definition in Ihrer Domain ist, dann ist es in Ordnung, sie in Ihre Event-Klassen aufzunehmen.

So frustrierend es zu hören ist, denke ich, dass es wirklich "abhängt".

Ich hoffe, das hilft. Viel Glück!!

+0

In der Tat wäre Carriage "Standard" wie Adresse in meiner Domäne. Ich bekomme einen verwirrten Kopf und es ist gut, Dinge aus einem anderen Blickwinkel zu sehen. Wie lustig, wie ein einzelnes Wort von Zeit zu Zeit alles klar machen kann. Vielen Dank. – Arthis

0

Ein separates Klassenbibliotheksprojekt erstellt werden kann Nachrichtenklassen (DTO) enthalten. Dieses Projekt sollte im Idealfall keine Abhängigkeiten zu anderen Projekten der Lösung aufweisen und sollte nur serialisierbare POCOs enthalten. In diesem Fall besteht eine minimale Abhängigkeit, da Sie nur die DTO-Bibliothek freigeben müssen.

Verwandte Themen