在c#中通过属性公开委托

本文关键字:属性 | 更新日期: 2023-09-27 18:01:45

如何通过属性暴露委托?我正在通过我的类公开一个委托,它是第三方类的成员。

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

在c#中通过属性公开委托

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

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

您可以将if条件设置为Null参数。换句话说,就像这样:

  public CardInformationAvailable OnDataRecieve 
  {
    set
    {
         if(value == null)
           _cardReaderBase.OnDataReady -= value;
         else
           _cardReaderBase.OnDataReady += value; 
     }
  }