2011-07-08 27 views
0

如何通過屬性暴露委託?我正在通過我的班級公開一個代表,這是第三方課程的成員。通過C中的屬性公開委託#

public CardInformationAvailable OnDataRecieve //CardInformationAvailable is a delegate type 
{ 
    set 
    { 
     _cardReaderBase.OnDataReady += value; // OnDataReady is a delegate of type 
               //CardInformationAvailable 
     // Where will i call -=value? 
    } 
} 
+2

我實際上並沒有明白你在做什麼或爲什麼,你可以擴展你的問題。 – Lazarus

+3

難道你不想使用「事件」嗎?我不明白這個問題。 –

+0

我同意Cicada,使用'event'。 – leppie

回答

4

不是100%確定的問題,但是如果你想通過你的課程公開你可以用這種方式包裝事件。但正如其他人所說,你可以直接將事件添加到_cardReaderBase?

public CardReader 
{ 
    public event OnDataReady; 
    private CardReaderBase _cardReaderBase; 

    public event OnDataReady OnDataReadyEvent 
    { 
     add 
     { 
     _cardReaderBase.OnDataReady += value; 
     } 
     remove 
     { 
     _cardReaderBase.OnDataReady -= value; 
     } 
    } 
} 
-1

您可以像if條件爲Null參數。換句話說這樣的事情:

public CardInformationAvailable OnDataRecieve 
    { 

    set 
    { 

     if(value == null) 
      _cardReaderBase.OnDataReady -= value; 
     else 
      _cardReaderBase.OnDataReady += value; 

    } 
    } 
+0

問題是關於公開DELEGATE而不是EVENT,實際上沒有看到我的答案中的問題在哪裏。 – Tigran

+0

對於這些要求,有特殊的添加和刪除參數。除了從multicastdelegate分離null不會分離最初連接的處理程序。要分離處理程序,你必須使用它的函數指針。 – PVitt