Actualmente estoy trabajando en la configuración de un nuevo proyecto mío y me preguntaba cómo podría lograr que mis clases de ViewModel tengan soporte INotifyPropertyChanged sin tener que codificar todas las propiedades yo mismo.Implementación automática de INotifyPropertyChanged a través de la generación de código T4?
Miré en los marcos de trabajo de AOP, pero creo que simplemente harían estallar mi proyecto con otra dependencia.
Así que pensé en generar las implementaciones de propiedad con T4.
La configuración sería esta: tengo una clase ViewModel que declara solo sus variables de fondo de Propiedades y luego uso T4 para generar las implementaciones de propiedades de la misma.
Por ejemplo, este sería mi modelo de vista:
public partial class ViewModel
{
private string p_SomeProperty;
}
Entonces T4 iría sobre el archivo de origen y buscar declaraciones de miembros nombrados "P_" y generar un archivo de la siguiente manera:
public partial class ViewModel
{
public string SomeProperty
{
get
{
return p_SomeProperty;
}
set
{
p_SomeProperty= value;
NotifyPropertyChanged("SomeProperty");
}
}
}
Este enfoque tiene algunas ventajas, pero no estoy seguro si realmente puede funcionar. Así que quería publicar mi idea aquí en StackOverflow como una pregunta para obtener algunos comentarios sobre ella y tal vez algunos consejos sobre cómo se puede hacer mejor/más fácil/más seguro.
Me siento como un idiota, pero no tenía idea de lo que es T4 hasta que lo busqué en Google por esta pregunta. ¡No puedo creer que esto no se hable más! – BFree
Yo también. Llegué aquí del hilo del preprocesador C# de un año (http://stackoverflow.com/questions/986404/does-a-c-preprocessing-tool-exist). Doh. – lo5
vea también http://stackoverflow.com/questions/1315621/implementing-inotifypropertychanged-does-a-better-way-exist –