Pergunta

Por exemplo, eu tenho

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

Posso obter a classe Foo AST e a barra de reescrita, em tempo de compilação, para

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

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

.

Foi útil?

Solução

A reescrita do tempo de compilação não é diretamente suportada por Roslyn hoje, mas as transformações sintáticas e semânticas definitivamente são.Na verdade, dê uma olhada no exemplo "ImplementNotifyPropertyChanged" incluído no CTP para ver algo do que você deseja fazer.O exemplo é implementado como uma transformação de tempo de design em um recurso IDE, mas você pode extrair a lógica e transformá-la em algo como uma tarefa de pré-construção que reescreve os arquivos antes da compilação.

Outras dicas

Não acho que isso seja possível no CTP atual que foi lançado, pois o compilador está lá como serviço, mas não existe tal coisa que permite que você se conecte ao processo de compilação como faria no Nemerle.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top