สำหรับโครงการที่เขียนใน VB.net ฉันต้องการใช้คลาส PropertyChangeNotifier
จาก บทความนี้ อย่างน้อยฉันก็อยากลองดูว่าจะช่วยได้ไหม
เนื่องจากคลาสดั้งเดิมเขียนด้วย C# ฉันจึงพยายามแปลคลาสนี้เป็น VB.net แต่มีฟังก์ชันหนึ่งที่ฉันไม่สามารถคอมไพล์ได้ และฉันไม่รู้ว่าทำไม บางทีคุณอาจช่วยได้
ฟังก์ชั่นดั้งเดิมใน C# คือ:
private static void OnPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
PropertyChangeNotifier notifier = (PropertyChangeNotifier)d;
if (notifier.ValueChanged != null)
notifier.ValueChanged(notifier, EventArgs.Empty);
}
การแปลของฉัน (แก้ไขเล็กน้อย) (และการแปลอัตโนมัติของเว็บไซต์หลายแห่ง) คือ:
Private Shared Sub OnPropertyChanged(d As DependencyObject, e As DependencyPropertyChangedEventArgs)
Dim notifier As PropertyChangeNotifier
notifier = TryCast(d, PropertyChangeNotifier)
If (notifier Is Nothing) Then
Exit Sub
End If
RaiseEvent notifier.ValueChanged(notifier, EventArgs.Empty)
End Sub
ถ้าฉันลบ RaiseEvent
ที่คอมไพเลอร์บอกฉันว่า ValueChanged
เป็นเหตุการณ์และไม่สามารถเรียกได้โดยตรง ฉันควรใช้ RaiseEvent
แต่เมื่อฉันใช้ RaiseEvent
คอมไพเลอร์บอกฉัน
'notifier' ไม่ได้ถูกประกาศ อาจไม่สามารถเข้าถึงได้เนื่องจากระดับการป้องกัน
แต่อย่างที่คุณเห็น notifier
ได้รับการประกาศสองสามบรรทัด
RaiseEvent notifier.ValueChanged(notifier, EventArgs.Empty)
เป็นRaiseEvent ValueChanged(notifier, EventArgs.Empty)
- person Anu6is   schedule 12.10.2019ValueChanged
เป็นเหตุการณ์ที่ไม่คงที่ของคลาสPropertyChangeNotifier
- person Nostromo   schedule 12.10.2019