Frage

Zum Beispiel habe ich

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

Kann ich die Foo-Klasse AST erhalten und Bar in der Kompilierungszeit auf umschreiben?

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

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

.

War es hilfreich?

Lösung

Das Umschreiben der Kompilierungszeit wird von Roslyn heute nicht direkt unterstützt, syntaktische und semantische Transformationen jedoch definitiv.Schauen Sie sich das im CTP enthaltene Beispiel "ImplementNotifyPropertyChanged" an, um zu sehen, was Sie tun möchten.Das Beispiel wird als Entwurfszeittransformation in und IDE-Funktion implementiert. Sie können die Logik jedoch extrahieren und in eine vorgefertigte Aufgabe verwandeln, die Dateien vor dem Kompilieren neu schreibt.

Andere Tipps

Ich denke nicht, dass dies in dem aktuellen CTP möglich ist, das veröffentlicht wurde, da der Compiler als Dienst verfügbar ist, aber es gibt keine Möglichkeit, sich in den Kompilierungsprozess einzubinden, wie dies in Nemerle möglich ist.

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