2014-04-27 64 views
-1

我有一個繼承自ObservableCollection的Generic類。訂閱通用類中的事件

我想通知在這個類,每當我對象在此集合變化一些特殊性質,不添加或刪除的對象,但編輯/更新對象。

我有這將作爲類型參數傳遞給這個泛型類的一些載體種類。在改變這些類的屬性後,我想提出一個將在這個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 
      } 
} 
} 

我不知道如何訂閱,在這種情況下

+1

問題是...? –

+0

你似乎沒有'RoutineClass'的實例。 – Magnus

+1

隨着你的編輯,它看​​起來像'INotifyPropertyChanged'(在'HelperClass')和'BindingList '(代替'CustomCollectionGenericClass ')的作業 –

回答

2

只能訂閱對一個類的實例非靜態事件引發事件。您無法訂閱來自類型的非靜態事件。

在你的情況,你可以做的是增加一個類型約束,確保約束強制執行事件可在該類然後訂閱實例的事件:

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

在在這個例子中,我添加了一個接收實例的方法,因爲您的泛型類中沒有任何實例。這可能不是你所需要的,但無論哪種方式,你都需要一個實例來訂閱事件。

一些澄清:這適用於當您有非靜態事件(按你的代碼)。如果您有靜態事件,則可以根據類型訂閱事件。

+0

是的,這是正確的,但在他的代碼中沒有靜態事件,只有實例事件 – Kenneth

+0

正確,修改 – Kenneth