Ich habe eine "partielle" Klasse in VB.NET. Die Hälfte davon wird automatisch von einem Code-Generierungstool generiert. Diese Hälfte implementiert INotifyPropertyChanged, sodass alle Eigenschaften in diesem Teil der partiellen Klasse das PropertyChanged-Ereignis auslösen.Wie gehst du mit einem Ereignis um, das in deiner Klasse in deiner eigenen Klasse ausgelöst wird?
In meinem "benutzerdefinierten" Teil der Klasse, deklariere ich eine andere Eigenschaft, die von einer der Eigenschaften in der automatisch generierten Seite abhängt. Wenn sich diese automatisch generierte Eigenschaft ändert, möchte ich daher auch ein PropertyChanged-Ereignis für meine benutzerdefinierte Eigenschaft auslösen, die davon abhängt.
Wenn ich in den generierten Teil der Klasse gehe und das Ereignis dort erstelle, wird das überschrieben, wenn ich diesen Teil jemals wieder erzeuge, also will ich das nicht machen. Ich würde lieber eine Ereignisbehandlungsroutine auf meiner Seite der partiellen Klasse hinzufügen, die überprüft, ob sich die generierte Eigenschaft geändert hat, und wenn dies der Fall ist, ein anderes Ereignis für meine benutzerdefinierte Eigenschaft auslösen.
Ich versuche, dies zu schreiben mein eigenes Event Haken, aber es funktioniert nicht:
Private Sub MyProperty_PropertyChangedHandler(_
ByVal sender As Object, ByVal e As PropertyChangedEventArgs _
) Handles Me.PropertyChanged
Select Case e.PropertyName
Case "AutoGenProperty"
RaiseEvent PropertyChanged(Me, _
New PropertyChangedEventArgs("MyProperty"))
End Select
End Sub
Ich nehme an, es ist, weil normalerweise würden Sie das Withevents Schlüsselwort verwenden, den Compiler zu sagen, dass Sie‘ Abonnieren von Ereignissen von diesem Objekt. Ich habe keine Ahnung, wie ich das in der Klasse machen soll, die das Event überhaupt aufzieht, oder ob das überhaupt möglich ist. die "Griffe Me.PropertyChanged" aus dem Event-Handler
Haben Sie eine Kontrolle über den Code-Generator? –
In diesem speziellen Fall, ja, aber ich habe andere Fälle, wo ich keine Kontrolle habe, und ich könnte immer noch das Problem dort haben. Ich habe deine frühere Antwort zu Partial Methods gesehen und angefangen, darüber nachzudenken. Es sieht so aus, als müsste ich die Code-Generierung ändern, um das zu erreichen. –
Ein gutes Beispiel, wo Sie keine Kontrolle haben würden, sind ADO.NET Entities. –