Erstellen Sie ein Ereignis zu sehen, für eine änderung der Variablen
Lasst uns einfach sagen, dass ich habe:
public Boolean booleanValue;
public bool someMethod(string value)
{
//Do some work in here.
return booleanValue = true;
}
Wie kann ich einen Ereignishandler erstellen, der ausgelöst wird, wenn die booleanValue geändert hat? Ist es möglich?
- Ist dies winform, ASP.Net oder Silverlight/WPF?
- Dies ist in Windows 8 Metro style app. Aber ich würde gerne eine Antwort für alles andere in C# (außer Silverlight)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vermeiden Sie die Verwendung von öffentlichen Bereichen, wie eine Regel im Allgemeinen. Versuchen Sie für sich zu behalten, so viel wie Sie können. Dann können Sie einen wrapper verwenden-Eigenschaft feuern Ihre Veranstaltung. Siehe Beispiel:
Ist eine einfache, "native" Weg, das zu erreichen, was Sie brauchen. Es gibt andere Möglichkeiten, auch angeboten durch die .NET Framework, aber das oben beschriebene Ansatz ist nur ein Beispiel.
INotifyPropertyChanged ist bereits definiert zu Benachrichtigen, wenn die Eigenschaft geändert wird.
Wickeln Sie Ihre Variablen im Eigentum und in Nutzung
INotifyPropertyChanged
- Schnittstelle.Ändern Sie den Zugang des BooleanValue zu privaten und nur zulassen, es zu ändern durch eine Methode für die Konsistenz.
Feuer das benutzerdefinierte Ereignis in dieser Methode
.
Option 2: es ist eine Eigenschaft und das Ereignis ausgelöst in den setter -
Edit: Wie schon andere gesagt haben
INotifyPropertyChanged
ist .NET-standard-Weg, dies zu tun.Vielleicht werfen Sie einen Blick auf die
INotifyPropertyChanged
- Schnittstelle. Sie sind verpflichtet, Sie zu stoßen, ist es wieder nutzen in der Zukunft:MSDN: http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx
In Ihrer Klasse mit der bool-property-Prozedur:
Nein, es ist nicht möglich,* benachrichtigt über änderungen im Wert einer Variablen.
Können Sie erreichen fast das, was Sie wollen, indem Sie den Wert einer Eigenschaft einer Klasse und auslösen von Ereignissen auf ändern, wie Sie möchten.
*) wenn Sie Ihren code-debugger für einen Prozess, den Sie machen können CPU informieren Sie über änderungen - siehe Daten ändern Haltepunkte in Visual Studio. Dies erfordert zumindest eine gewisse Menge an nativen code und schwieriger zu implementieren korrekt für manged code durch hance der Objekte im Speicher verschoben werden, die von GC.