16 Stimmen

Kann ich Roslyn zum Umschreiben von Code zur Kompilierzeit verwenden?

Ich habe zum Beispiel

class Foo: INotifyPropertyChanged {
    public event PropertyChangedEventHandler PropertyChanged;
    public int Bar {get;set;}
}

Kann ich die Klasse Foo AST und umschreiben Bar, in Kompilierzeit, zu

    public string Bar
    {
        get { return this.bar; }

        set 
        {
            if (value != this.bar)
            {
                this.phoneNumberValue = value;
                PropertyChanged(this, new PropertyChangedEventArgs("Bar"));
            }
        }
    }

.

16voto

Kevin Pilch Punkte 11367

Das Umschreiben zur Kompilierzeit wird von Roslyn derzeit nicht direkt unterstützt, aber syntaktische und semantische Transformationen sind definitiv möglich. Werfen Sie einen Blick auf das Beispiel "ImplementNotifyPropertyChanged", das in der CTP enthalten ist, um zu sehen, was Sie tun möchten. Das Beispiel ist als Entwurfszeittransformation in einer IDE-Funktion implementiert, aber Sie können die Logik extrahieren und daraus eine Art Pre-Build-Aufgabe machen, die Dateien vor der Kompilierung umschreibt.

2voto

Ankur Punkte 32819

Ich glaube nicht, dass dies in der aktuellen CTP, die veröffentlicht wurde, möglich ist, da der Compiler als Dienst vorhanden ist, aber es gibt keine Möglichkeit, sich in den Kompilierungsprozess einzuschalten, wie es in Nemerle möglich ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X