Sto costruendo una classe di raccolta gerarchica che ordina spazialmente le immagini di risonanza magnetica e li organizza in raggruppamenti basati sui vari parametri di acquisizione utilizzati per generarli. Il metodo specifico utilizzato per eseguire il raggruppamento è fornito dall'utente della classe. Ho estratto le funzioni rilevanti nel seguente codice di esempio. Per l'implementazione IEquatable<MyClass>
, mi piacerebbe essere in grado di confrontare gli attributi _myHelperDelegate
di due istanze MyClass
per determinare se entrambi i delegati puntano allo stesso pezzo di codice. La clausola (_myHelperDelegate == other._myHelperDelegate)
nella seguente istruzione if è chiaramente il modo sbagliato per farlo (non riesce a compilare, dando l'errore "Nome metodo previsto"). La mia domanda è, c'è un modo per confrontare due delegati per determinare se fanno riferimento allo stesso pezzo di codice? Se è così, come si fa?Testing delegati per l'uguaglianza
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;
}
}
"Sto costruendo una classe di raccolta gerarchica che ordina spazialmente le immagini di risonanza magnetica" mi hai perso. –
La classe Delegate ha un metodo 'Equals()' (http://msdn.microsoft.com/en-us/library/99bthb1z(v=VS.90).aspx), l'hai provato? – CodingGorilla
La mia intuizione sull'origine del problema era errata. Il confronto tra i due delegati che usano == funziona davvero. Il problema era un errore di sintassi nel codice originale. Mi mancavano le && tra clausole nella dichiarazione if. * facepalm * – Matt