У меня есть общий класс GeneralClass, который содержит событие с общим обработчиком событий.
GeneralClass<T>
{
public event DataChangedHandler<T> DataChanged;
}
И я могу написать следующий код:
class MainClass
{
public void OnDataChanged<T>(T parametrs)
{
}
var MyClass1 = new GenericClass<classA>();
var MyClass2 = new GenericClass<classB>();
MyClass1.DataChanged+= OnDataChanged;
MyClass2.DataChanged+= OnDataChanged;
}
Все работает, как я и ожидал. Но можно ли хранить все разные экземпляры моего универсального класса в одной коллекции и добавлять обработчик событий в цикле? Что-то вроде этого:
class MainClass{
public void OnDataChanged<T>(T parametrs)
{
}
var MyClass1= new GenericClass<classA>();
var MyClass2= new GenericClass<classB>();
List<> genericClasses = new List<>();
genericClasses.Add(MyClass1);
genericClasses.Add(MyClass1);
genericClasses.foreach(t=>t.DataChanged+=OnDataChanged)
}
Я знаю, что могу хранить все свои экземпляры в списке объектов, но тогда у меня нет доступа к событию. Если я передаю объект в GenericClass, я должен указать общий параметр (тип).