Проверка делегатов на равенство

Я создаю класс иерархической коллекции, который упорядочивает изображения магнитного резонанса в пространстве и упорядочивает их в группы на основе различных параметров сбора данных, которые использовались для их создания. Конкретный метод, используемый для выполнения группировки, предоставляется пользователем класса. В приведенном ниже примере кода я абстрагировал соответствующие функции. Для реализации IEquatable я хотел бы иметь возможность сравнить атрибуты _myHelperDelegate двух экземпляров MyClass , чтобы определить, указывают ли оба делегата на тот же кусок кода. Предложение (_ myHelperDelegate == other._myHelperDelegate) в приведенном ниже операторе if явно неправильный способ сделать это (он не компилируется, выдает ошибку «Ожидаемое имя метода»). Мой вопрос: есть ли способ сравнить двух делегатов, чтобы определить, ссылаются ли они на один и тот же фрагмент кода? Если да, то как это сделать?

public class MyClass : IEquatable<MyClass>
{
   public delegate object HelperDelegate(args);
   protected internal HelperDelegate _myHelperDelegate;

   public MyClass(HelperDelegate helper)
   {
      ...
      _myHelperDelegate = helper;
   }

   public bool Equals(MyClass other)
   {
      if (
          (_myHelperDelegate == other._myHelperDelegate) &&
          (... various other comparison criteria for equality of two class instances... )
         )
         return true;
      return false;
   }
}
12
задан Matt 4 March 2011 в 19:59
поделиться