C# 订阅泛型类中的事件

C# 订阅泛型类中的事件,c#,generics,C#,Generics,我有一个从ObservaleCollection继承的泛型类 每当此集合中我的对象的某些特定属性发生更改时,我希望获得此类中的通知,而不是添加或删除对象,而是编辑/更新对象 我有一些carrier类,它们将作为类型参数传递给这个泛型类。在更改这些类中的属性后,我想引发一个事件,该事件将在这个泛型类中进一步处理 public class CustomCollectionGenericClass<T>:ObservableCollection { } public class Help

我有一个从ObservaleCollection继承的泛型类

每当此集合中我的对象的某些特定属性发生更改时,我希望获得此类中的通知,而不是添加或删除对象,而是编辑/更新对象

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

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
          }
}
}

我不知道如何订阅和引发事件在这种情况下,您只能针对类的实例订阅非静态事件。不能从类型订阅非静态事件

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

public class GenClass<T> where T : RoutineClass
{
    public someMethod(T yourInstance)
    {
        yourInstance.EventToSubscribe += yourHandler;
    }
}
在本例中,我添加了一个接收实例的方法,因为在泛型类中的任何地方都没有实例。这可能不是您所需要的,但无论如何,您都需要一个实例来订阅事件


一些说明:当您的代码中有非静态事件时,这一点适用。如果您有静态事件,您可以根据类型订阅事件。

问题是…?您似乎没有RoutineClass的实例。通过编辑,它看起来像是在HelperClass和BindingList上更改InotifyProperty的作业,而不是CustomCollectionGenericClass@MarcGravell我对你的建议做了一些研究。首先,它完全按照我所希望的那样工作,但是有很多关于BindingList性能的问题。是的,这是正确的,但是在他的代码中没有静态事件,只有实例事件