Vorgehensweise-Settings-UserControls-DLL's/Exe

22/12/2008 - 22:02 von Sandra Baum | Report spam
Hallo,

ich frage nochmals nach.
Leider will es nicht richtig klappen.

Folgende Idee:
UserControl1 -- DLL1 -- der erste will rote Textboxen
Textbox1 Ergebnis = Textbox1 rot
UserControl2 -- DLL2 -- der zweite will blaue Textboxen
Textbox1 Ergebnis = Textbox1 blau
UserControl3 -- DLL3 -- der dritte braucht eine weitere TextBox
und baut dann das Ergebnis zusammen.
Textbox1 + Textbox2 Ergebnis = Textbox1 + Textbox2

Hauptanwendung -- EXE

Ich werde versuchen mein kleines Beispiel anhand den Links umzusetzen.
So sind die Basics abgedeckt, aber irgendwo tut es nicht.

Vielleicht noch kurz
Wann nehme ich Schnittstellen?
Wann nehme ich Contracts?
Wo liegt kurz geschildert der Unterschied?

http://tinyurl.com/yl4g42

Vielleicht hat noch jemand ein konkretes Beispiel parat.
Deshalb frage ich nochmals nach.

Viele Grüße Sandra
 

Lesen sie die antworten

#1 Elmar Boye
22/12/2008 - 23:16 | Warnen spam
Hallo Sandra,

"Sandra Baum" schrieb ...
Folgende Idee:
UserControl1 -- DLL1 -- der erste will rote Textboxen
Textbox1 Ergebnis = Textbox1 rot
UserControl2 -- DLL2 -- der zweite will blaue Textboxen
Textbox1 Ergebnis = Textbox1 blau
UserControl3 -- DLL3 -- der dritte braucht eine weitere TextBox und baut dann das Ergebnis zusammen.
Textbox1 + Textbox2 Ergebnis = Textbox1 + Textbox2

Hauptanwendung -- EXE

Ich werde versuchen mein kleines Beispiel anhand den Links umzusetzen.



Zumindest für Dein Beispiel und WinForms wàre das Umsetzen von Ralfs
Ausführungen bez. Kontraktes auf der Ebene <-> mehr oder weniger
bunte Textboxen etwas übers Ziel hinaus geschossen.

Eine wesentlich naheliegendere Lösung wàre dort, die Einstellungen
für Farben usw. von Steuerelementen zu speichern, so dann kann
das Ganze auch mal Rosa+Grün werden, ohne das Du eine neue
Komponente erstellen mußt ;-). Und eine Einheitlichkeit der
Oberflàche bleibt gewàhrleistet.

Der Kontrakt (Service) wàren dort mehr die möglichen Einstellungs-
möglichkeiten, wie Hintergrund-, Vordergrund-, Fokusfarbe etc.,
die die Steuerelemente jeweils über eine Konfiguration beziehen.

Für WPF sieht es wegen der größeren Konfigurationsmöglichkeiten
via Styles etwas anders aus.

Um bei den Steuerelementen zu bleiben, wàre ein einfaches Beispiel,
eine Artikelnummer, die je nach Kundenspezifikation darzustellen wàre -
der eine mags numerisch, der zweite alphanumerisch, der dritte
möchte mal zwei Punkte und einen Strich dazwischen.

Vielleicht noch kurz
Wann nehme ich Schnittstellen?
Wann nehme ich Contracts?
Wo liegt kurz geschildert der Unterschied?



Da gibt es keinen Unterschied, beide arbeiten vielmehr Hand in Hand.
Ein Kontrakt wird üblicherweise durch eine Schnittstelle ausgedrückt.
Siehe

<Zitat>
... = new MyServiceClass();

you write something doing the equivalent of

.. .= new IMyService();
</Zitat>

hier ist new IMyService eine Schnittstelle, - syntaktisch allerdings
falsch, da man Schnittstellen nicht erzeugen kann.

Für obige Artikelnummen würdest Du eine Schnittstelle definieren,
die das Aufbereiten der Artikelnummer definiert -> der Kontrakt.
Und nun für die jeweiligen kundenspezifischen Darstellungen erfüllst
Du den Kontrakt durch eine angepasste Klasse.
Und so kannst Du das weiterspinnen für eine Adresskomponente uvm.

Ob das durch einen Microkernel oder anders implementiert wird,
ist letztendlich weniger von Belang. Ich erinnere mich an Artikel
von Ralf Westphal in der DotnetPro, wo er Unity eingesetzt hat:
http://www.codeplex.com/unity
Ähnliche Konzepte implementieren der ObjectBuilder der Enterprise
Library oder Spring.NET.
Wobei der Einsatz letztendlich optional ist.

Wesentlich - und das schwierige - ist mehr, die Applikation in
ihre funktionalen Bestandteile zu zerlegen, also die Kontrakte
zu definieren (designen).

Ein Versuch stellt z. B. der SCSF http://www.codeplex.com/smartclient
dar, wobei dort vieles - mir zu - schwergewichtig ausfàllt.
Etwas schlanker ist (derzeit noch) das WPF Äquivalent:
http://msdn.microsoft.com/en-us/lib...07819.aspx
Auszugsweise zum Thema paßt u. a.
http://msdn.microsoft.com/en-us/lib...07875.aspx

Gruß Elmar

Ähnliche fragen