Pregunta

Por ejemplo, tengo

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

¿Puedo obtener el AST de la clase Foo y reescribir la barra, en tiempo de compilación, para

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

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

.

¿Fue útil?

Solución

Actualmente, Roslyn no admite directamente la reescritura en tiempo de compilación, pero las transformaciones sintácticas y semánticas definitivamente sí lo son.De hecho, eche un vistazo a la muestra "ImplementNotifyPropertyChanged" incluida en el CTP para ver algo de lo que desea hacer.La muestra se implementa como una transformación en tiempo de diseño y una función IDE, pero puede extraer la lógica y convertirla en algo así como una tarea de compilación previa que reescribe archivos antes de la compilación.

Otros consejos

No creo que esto sea posible en el CTP actual que se ha lanzado ya que el compilador está ahí como servicio, pero no existe tal cosa que le permita conectarse al proceso de compilación como puede hacer en Nemerle.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top