Automatisches Generieren einer Wrapper-Klasse in C # mithilfe von Komposition

8

Das sollte einfach sein, aber ich kann nichts finden.

Ich habe eine Klasse in einer Assembly (eine gemeinsam genutzte Bibliothek - es ist eine Gruppe von Proxy-Klassen für einen Web-Service) Ich habe eine Klasse in einer anderen Versammlung (Webprojekt)

Es gibt eine Klasse namens "Profile", die sich in der Proxy-Assembly befindet. Es gibt eine Reihe von Klassen, die ein Profil im Webprojekt "verwenden". Wenn kein Benutzer angemeldet ist, wird ein GenericProfile verwendet.

Nach dem Prinzip der "Trennung der Sorgen" .... Die Proxy-Assembly wird von anderen Projekten verwendet und beschäftigt sich nur mit den Web-Service-Aufgaben. Das Web-Projekt hat nur Web-Zeug drin

Aber jetzt gibt es diese Notwendigkeit für ein "GenericProfile" - denken Sie daran als "Gastbenutzer".

Es ist logisch, eine Schnittstelle namens IProfile zu erstellen, die beide Klassen davon ableitet. Aber das würde eine zirkuläre Abhängigkeit zwischen den beiden Assemblies erzeugen.

Die nächstbeste Idee ist es, eine dritte Assembly mit dem Namen MyInterfaces zu erstellen und das IProfile dort einzufügen - aber das ist meines Erachtens eine Verletzung des Grundsatzes der Trennung von Interessen. Zumindest scheint eine Instanz dieses Problems ein zu geringer Grund für die Erstellung eines zusätzlichen Moduls in meiner Lösung zu sein.

Geben Sie die Wrapper-Klasse oder die Composite-Wrapper-Klasse ein (wie immer Sie sie nennen wollen)

Ich bin auf der Suche nach etwas, das am Ende so etwas erzeugt. Gibt es ein Tool oder eine Visual Studio-Erweiterung, die das tun? Vielleicht eine .tt Datei?

%Vor%     
010110110101 31.08.2011, 03:28
quelle

2 Antworten

2

Ich verstehe nicht ganz, was Sie erreichen wollen, aber unten möchte ich eine Wrapper-Klasse mit ReSharper erstellen.

Wenn mein Arbeitgeber nicht für ReSharper bezahlen möchte, kaufe ich es. Es macht mich zu einem besseren Entwickler. Ich schlage vor, Sie erwägen, es als eine Investition in Ihre Karriere zu erwerben. Anti-Disclaimer - Ich bin überhaupt nicht mit ReSharper verbunden oder gesponsert.

  1. fügen Sie die Schnittstelle der Klasse hinzu, die Sie als Wrapping-Klasse verwenden möchten

    %Vor%
  1. Suchen / Klicken Sie auf "Implementierung von" YourInterfaceHere "in ein neues Feld delegieren
  1. Wählen Sie Ihre Optionen
  1. Klicken Sie auf Fertig stellen und genießen Sie Ihre neue Klasse

    %Vor%
Jacob Brewer 11.01.2017 15:05
quelle
0

Wenn ich mit Ihrem ursprünglichen Problem konfrontiert wurde, würde ich IProfile in Ihre gemeinsam genutzte Bibliothek neben der Klasse Profile einfügen. Ihr Webprojekt kann dann die benötigte GenericProfile -Klasse implementieren, nichts anderes muss darüber informiert werden, und andere Clients der Bibliothek können das Gleiche tun wie benötigt. Es wäre auch nützlich, um die Bibliothek zu testen.

    
TarkaDaal 12.08.2015 09:07
quelle

Tags und Links