PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Producer Consumer Command Pattern in .net


del_4901
2011-04-02, 23:24:02
Also ich probiere schon seit einigen Tagen in C# moeglichst codeeffizent dieses Problem zu loesen, aber irgendwie artet das ganze in Klassenexplosion aus. Delegates, Generics, Kovarianz und Kontravarianz bringen mich da irgendwie nicht weiter.
Ich wuenschte es gaebe Macros oder Templates. Jedesmal diesen bloeden Konstruktor zu schreiben der effektiv nichts tut geht mir gewaltig gegen den Strich. Ich sollte vielleicht erwaehnen, das ich eventuell unterschiedliche Consumer einhaengen moechte und Execute() wahrscheinlich fuer mehrere Plattformen implementiert werden muesste und dazu noch die ganzen Kapselklassen nur um die Platformspezifischen Objekte zu verbergen... gaehn.
Gibt es da vielleicht ne clevere Variante mit F#?

Coda
2011-04-02, 23:25:06
Welchen "blöden Konstruktor" meinst du denn? So ist das ganze ziemlich unverständlich.

del_4901
2011-04-02, 23:31:23
Ich mein damit du die Args fuer die einzelnen ICommands mittels eines Konstruktors befuellst. Vielleicht geht das auch eleganter? Damit ein anderer Thread dann in Execute() die Args auch zur Verfuegung hat.

Eigentlich will die die ganzen Platformspezifischen Typen mit einem Einzeiler definieren und das ganze soll sich selber befuellen, so das ich dann nur noch Execute() implementieren muss.

Monger
2011-04-03, 00:19:55
Vielleicht bin ich auch einfach doof, aber ich hab keine Ahnung wovon du redest. Was für ICommands? Ich kenn ein ICommand Interface von WPF, aber das meinst du wohl nicht. Wäre zumindest mal nett, wenigstens ungefähr zu wissen wo du gerade im .NET Framework rumdoktorst. Noch besser wäre natürlich ein Code-Beispiel, damit wir auch konkret antworten können.

Coda
2011-04-03, 03:29:01
Ich kenn das Pattern, aber ich versteh auch immer noch nicht was er meint :D

Beispielcode?

Ectoplasma
2011-04-03, 09:45:14
Das Pattern ist ziemlich klar. Mir ist aber nicht ganz klar, wie du ein Kommand-Objekt ohne CTOR schreiben willst, wenn für den Execute-Aufruf Daten benötigt werden? Und wieso muss man in C# (leider kenne ich mich mit C# nicht so aus) einen CTOR implementieren, der nichts tut? Normalerweise schreibt man den einfach nicht hin. Über AOP könntest du zumindest die platformspezifischen Aufgaben aus den Objekten fern halten und schreibst diese nur einmal. Das geht natürlich nur, wenn die platformspezifischen Aufgaben vor oder nach dem Execute ausgeführt werden können.