Ich bin neu bei PostSharp (habe gerade meine Lizenz) und ich habe versucht, es in meiner App zu verwenden. Ich habe eine Klasse-Einstellungen einen folgende:NotifyPropertyChanged nicht feuernde Veranstaltung [PostSharp]
[NotifyPropertyChanged]
public class Consts
{
public string test2 {get; set;} = "foobar";
public string test
{
get { return GetValue("test"); }
set { UpdateSetting(nameof(test), value.ToString(CultureInfo.InvariantCulture)); }
}
[Pure]
public static string GetValue(string s) => ConfigurationManager.AppSettings[nameof(s)];
[Pure]
private static void UpdateSetting(string key, string value)
{
var cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
cfg.AppSettings.Settings[key].Value = value;
cfg.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
}
}
Dann auf meinem Teilnehmerklasse:
var cst = new Consts();
Post.Cast<Consts, INotifyPropertyChanged>(cst).PropertyChanged +=
(o, args) => Debug.Write("PropertyChanged fired");
cst.test = "test test"; // Gives no result
cst.test2 = "test test"; // Event firing correctly
Das Ereignis wird nicht ausgelöst, wenn ich Methoden in meiner Getter & Setter verwenden, obwohl rein markiert, aber Werke gut, wenn es eine einfache Eigenschaft ist.
Ich verbrachte den letzten Tag damit, Google nach Antworten zu durchsuchen, ohne Glück; Kein Thread löst mein Problem.
Was fehlt mir?
Ich weiß nicht wer du bist, aber ich werde dich finden und dir eine Medaille geben. –