Я пытаюсь добавить событие CollectionChanged к любому элементу в классе. Предположим, у меня есть следующее:
public class A
{
string OneString;
string TwoString;
ObservableCollection<B> CollectionOfB;
}
public class B
{
string ThreeString;
string FourString;
string FiveString;
ObservableCollection<C> CollectionOfC;
}
public class C
{
string SixString;
string SevenString;
}
Мой код в настоящее время начинается с класса A и просматривает каждый элемент в классе, который использует INotifyPropertyChanged, назначает события PropertyChanged каждому элементу и рекурсивно детализирует каждый подкласс, назначая события PropertyChanged на каждом уровне.
Моя проблема заключается в том, что я пытаюсь назначить события CollectionChanged для ObservableCollection. Мой код не будет знать тип элемента в ObservableColleciton до времени выполнения. У меня есть следующий код:
protected virtual void RegisterSubPropertyForChangeTracking(INotifyPropertyChanged propertyObject)
{
propertyObject.PropertyChanged += new PropertyChangedEventHandler(propertyObject_PropertyChanged);
// if this propertyObject is also an ObservableCollection then add a CollectionChanged event handler
if (propertyObject.GetType().GetGenericTypeDefinition().Equals(typeof(ObservableCollection<>)))
{
((ObservableCollection<object>)propertyObject).CollectionChanged +=
new NotifyCollectionChangedEventHandler(propertyObject_CollectionChanged);
}
}
Когда я пытаюсь добавить обработчик событий CollectionChanged, я получаю следующую ошибку:
{"Unable to cast object of type 'System.Collections.ObjectModel.ObservableCollection`1[SOC.Model.Code3]' to type 'System.Collections.ObjectModel.ObservableCollection`1[System.Object]'."}
Как я могу добавить обработчик события CollectionChanged, не зная типа класса до времени выполнения