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