| 

.NET C# Java Javascript Exception

1
In unserem bestehenden Programm in VB.NET 4.5 sollen Windows-Forms Klassen kundenspezifisch "überschrieben" werden. Die Kundenspezifische Klassen sollen in einer eigenen DLL ausgeliefert werden. Eine dynamische Bindung wäre natürlich optimal aber der Aufwand über Reflection oder Add-In Framework ist uns aber zu hoch.
Können wir den Namespace so organisieren, daß die kundenspezifische Klasse benutzt wird, wenn sie vorhanden ist, ansonsten die Standardklasse instanziert wird. Natürlich muß das Projekt, dann kundenspezifisch compiliert werden.
Über Imports Aweisungen habe ich das nicht geschafft. Es wir ohne Namespace Angabe immer die Standard-KLasse im eigenen Projekt benutzt. Kann ich den My Namespace dazu nutzen?
News:
18.09.2012
Dieter 3 3
Ich fände es hilfreich, wenn Du (über den Link "Frage editieren") Deiner Frage ein Code-Beispiel anfügen könntest, das Dein Vorhaben illustriert.
Matthias Hlawatsch 18.09.2012
2 Antworten
2
Vielleicht habe ich Dein Vorhaben noch nicht so recht verstanden (deshalb auch mein Kommentar zu Deiner Frage), aber auf den ersten Blick sieht es für mich so aus, als wäre nicht Namespace-Trickserei, sondern das Entwurfsmuster Abstrakte Fabrik für Dein Problem ein passendes Werkzeug (mit einer Standard-Fabrik sowie pro Kunde einer kundenspezifischen Fabrik).
18.09.2012
Matthias Hlawatsch 13,2k 4 9
Danke an Matthias und luedi, das ist der richtige Weg und weniger Aufwand als gedacht. Ich habe es so einfach wie möglich gehalten. Eine Fabrikklasse die prüft ob in der kundenspezifischen DLL die angeforderte Klasse vorhanden ist. Ansonsten wird die Klasse aus der eigenen DLL/Exe geladen.
Die einzelnen Formen werden dann über die Fabrik instanziert.

Gruß

Dieter
Dieter 21.09.2012
2
Die Aufgabenstellung lässt sich einfach mit mit Dependency Injection lösen. Dadurch wirst du in die Lage versetzt, per Konfiguration festzulegen, welche Formulare geladen werden.

Es gibt eine Reihe von Frameworks, die dies unterstützen wie z.B. MEF (Bestandteil des .NET Farmeworks), Unity (Teil der Patterns & Practices Enterprise Library) oder Spring.NET.

Gruß
Klaus
19.09.2012
luedi 2,1k 1 9

Stelle deine .net-Frage jetzt!