更新时间:2022-11-24 16:42:11
它不是属性,而是字段.这有效:
It is not a property, it is a field. This works:
using System;
using System.Collections.ObjectModel; // Add reference to WindowsBase
using System.Collections.Specialized;
using System.Reflection;
namespace ConsoleApplication1 {
class Program {
static void Main(string[] args) {
var coll = new ObservableCollection<int>();
coll.CollectionChanged += coll_CollectionChanged;
coll.Add(42);
FieldInfo fi = coll.GetType().GetField("CollectionChanged", BindingFlags.NonPublic | BindingFlags.Instance);
NotifyCollectionChangedEventHandler handler = fi.GetValue(coll) as NotifyCollectionChangedEventHandler;
handler.Invoke(coll, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
}
static void coll_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) {
Console.WriteLine("Changed {0}", e.Action);
}
}
}
不要使用它.