通过C#中的属性公开委托

时间:2011-07-08 11:46:55

标签: c# class properties

如何通过属性公开委托?我通过我的班级揭露了一名代表,该代表是第三方课程的成员。

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 个答案:

答案 0 :(得分:4)

对这个问题不是100%肯定,但如果你想通过你的课程公开,你可以用这种方式包装事件。但正如其他人所提到的,您可以直接将事件添加到_cardReaderBase?

public CardReader
{
   public event OnDataReady;
   private CardReaderBase _cardReaderBase;

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

答案 1 :(得分:-1)

您可以为Null参数添加if条件。换句话说就是这样:

  public CardInformationAvailable OnDataRecieve 
  {

    set
    {

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

     }
  }