Dynamischen Code zur Laufzeit mit T4 und C # übersetzen

9

Die Artikel, die ich in T4 mit TextTemplatingFilePreprocessor gelesen habe, zeigen, wie man dynamisch Code generiert, der Teil eines Projekts wird und mit dem Projekt kompiliert wird.

Ist es möglich, T4 zu verwenden, um Code zu generieren, der zur Laufzeit kompiliert, an eine DLL ausgegeben und geladen und ausgeführt wird, wobei der Code auf die üblichen Sichtbarkeitsfähigkeiten einer DLL zugreifen kann?

Wenn ja, könnten Sie mich bitte auf ein Beispiel hinweisen.

Ich versuche effektiv, dasselbe zu tun, indem ich eine dynamische DLL mit IL erzeuge, aber eher C # benutze.

BEARBEITEN

Der spezielle Fall, für den ich das brauche, ist einfach. Ich schreibe einen Nachrichtenrouter, der Nachrichten an Dienste weiterleitet. Dienste können lokal oder remote sein. Ein deklaratives Skript wird in C # kompiliert. Der dynamische Teil lautet "Ist dieser Dienst lokal oder entfernt?". Der Ausgang C # wird entsprechend geändert. Der Routing-Stil unterscheidet sich für local / remote, daher die dynamische Art.

Dies ist ein Beispiel für das, was ich brauche.

    
IamIC 01.03.2013, 17:56
quelle

1 Antwort

4

Um dies zu tun, müssen Sie zwei Dinge wissen:

  1. Sie können die T4-Laufzeitvorlage verwenden, um zur Laufzeit etwas Text zu generieren, einschließlich des C # -Quellcodes.
  2. Sie können CSharpCodeProvider verwenden, um eine Assembly aus dem Text at zu kompilieren Laufzeit. Oder Sie könnten csc.exe (den C # -Compiler der Befehlszeile) manuell für den generierten Text ausführen, aber das wäre komplizierter. (Tatsächlich macht CSharpCodeProvider genau das hinter den Kulissen.)

Der Code könnte so aussehen:

%Vor%     
svick 01.03.2013, 19:10
quelle

Tags und Links