Я создаю класс иерархической коллекции, который упорядочивает изображения магнитного резонанса в пространстве и упорядочивает их в группы на основе различных параметров сбора данных, которые использовались для их создания. Конкретный метод, используемый для выполнения группировки, предоставляется пользователем класса. В приведенном ниже примере кода я абстрагировал соответствующие функции. Для реализации 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;
}
}