订阅Generic类中的事件

本文关键字:事件 Generic 订阅 | 更新日期: 2023-09-27 18:00:22

我有一个Generic类,它继承自ObservableCollection。

每当我的对象在这个集合中的某些特定属性发生变化时,我想在这个类中获得通知,而不是添加或删除对象,而是编辑/更新对象。

我有一些载体类,它们将作为Type参数传递给这个泛型类。在更改这些类中的属性后,我想引发一个事件,该事件将在这个Generic类中进一步处理。

public class CustomCollectionGenericClass<T>:ObservableCollection
{
}
public class HelperClass
{
public string Name
{
       get{return _name;}
       set{_name=value;
          //raise some event which will be handled in custom collection class
          }
}
}

我不知道如何在这种情况下订阅和引发事件

订阅Generic类中的事件

您只能针对类的实例订阅非静态事件。不能从类型订阅非静态事件。

在您的情况下,您可以添加一个类型约束,确保该约束强制该事件在该类上可用,然后订阅实例的事件:

public class GenClass<T> where T : RoutineClass
{
    public someMethod(T yourInstance)
    {
        yourInstance.EventToSubscribe += yourHandler;
    }
}

在这个例子中,我添加了一个接收实例的方法,因为在泛型类中没有任何实例。这可能不是您所需要的,但无论哪种方式,您都需要一个能够订阅事件的实例。

需要说明的是:这适用于非静态事件(根据您的代码)。如果您有静态事件,您可以订阅该类型的事件。