Il post di Matteo mi aveva già stuzzicato, ma non conquistato del tutto per un paio di motivi.
La variante riportata oggi da Corrado mi ha suggerito una possibile soluzione che poi si è rivelata forse ancora più “lineare” di quanto mi aspettassi, permettendo di centralizzare il tutto in un unica classe “helper” esterna, con i vantaggi che ne derivano.
Così il “set” riportato da Corrado potrebbe diventare (chiedo venia per non aver ancora installato un code formatter per WLW):
set
{
if (!(value.Equals(userName))
{
userName = value;
PropertyChangedNotifier.NotifyPropertyChanged(this, PropertyChanged);
}
}
in cui PropertyChanged é il PropertyChangedEventHandler della classe.
La classe “helper” è la seguente:
public class PropertyChangedNotifier
{
private PropertyChangedNotifier() { }
private static StackTrace stackTrace;
public static void NotifyPropertyChanged(object sender, PropertyChangedEventHandler eventHandler)
{
if (eventHandler == null) return;
if (stackTrace == null) stackTrace = new StackTrace();
eventHandler(sender, new PropertyChangedEventArgs(stackTrace.GetFrame(1).GetMethod().Name.Remove(0, 4)));
}
}
Ovviamente non l’ho ancora provata sul “campo” come si deve, comunque l’ho già aggiunta alle “Common”.
UPDATE: Come temevo inizialmente (nonostante le mie precedenti verifiche per qualche motivo erroneamente negative), Corrado stesso mi avvisa che in release lo StackTrace non serve allo scopo. Come non detto! :-(