Frage

Ich habe eine Datei, die sich über viele App-Projekte verwendet werden. der einzige Unterschied dieser Dateien ist der Webservice Referenznamen. Code wie folgt:

public void Test(){
    Kevin.ServiceReference1.Service1Client client = new Kevin.ServiceReference1.Service1Client();
    // do something....
}

wie oben stehenden Code wird die ‚Kevin.ServiceReference1‘ von bestimmtem App-Projekt-Namespace ersetzen sein. so, nach DRY (nicht selbst wiederholen), sollte ich nicht einfach kopieren Sie die Datei in vielen Projekten und den angegebenen Teil manuell umbenennen. Gibt es irgendeine Weise, die ich einfach einige Teile meiner Vorlagendatei, um etwas mit dem Projekt ersetzen kann?

War es hilfreich?

Lösung

Haben Sie in der Microsoft-T4 Code Template-System geschaut? Es könnte sein, was Sie brauchen.

Links: http://msdn.microsoft.com/en-us /vstudio/cc308634.aspx
http://visualstudiomagazine.com /articles/2009/05/01/visual-studios-t4-code-generation.aspx

Andere Tipps

Dies ist keine Frage der DRY; während die Dateien könnte ähnlich aussehen, * Sie wiederholen sich nicht, weil der einzige Betrieb - die Deklaration und Zuweisung einer Variablen -. verschieden für jede Art ist **

Während Sie in dem Geben Sie Ihre Klassen einen gemeinsamen Elternteil aussehen könnten wollen, wenn sie ein gemeinsames Ziel teilen, gibt es nichts in Ihrem Beispiel, das deutet darauf hin, dass die Klassen sind in der Tat in irgendeiner Weise mit.

Wenn Sie nach Möglichkeiten nun das Verfahren zu automatisieren, um es auf dir leichte Besuche T4-Vorlagen (frei von Microsoft) oder Postsharp . Es gibt viele andere Threads hier über Codegenerierung.

Wenn das einzige, was in der Datei zu ändern ist der Namespace und Klassennamen, können Sie alle anderen gemeinsamen Funktionalität in eine Basisklasse extrahieren. Dann wird für jede andere Verwendung, machen Sie eine abgeleitete Klasse von der Basisklasse erben. Die abgeleitete Klasse konnte nur eine einfache Methode, die die spezifischen Namespace / Klasse zurückkehren würde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top