Delegate.CreateDelegate () und Generics: Fehler beim Binden an die Zielmethode

9

Ich habe Probleme beim Erstellen einer Sammlung von Delegaten mit Reflektion und Generics.

Ich versuche, eine Delegatensammlung aus Ally-Methoden zu erstellen, die eine gemeinsame Methodensignatur verwenden.

%Vor%

Und die Generika kochen:

%Vor%

Aber das Delegate.CreateDelegate( delegateType, method ) löst eine ArgumentException aus, die besagt, dass die Bindung an die Zielmethode fehlerhaft ist. : /

Was mache ich falsch?

    
SDReyes 26.04.2010, 16:13
quelle

1 Antwort

16

Das liegt daran, dass die Überladung von Delegate.CreateDelegate nur die Erstellung von Delegaten unterstützt, die auf statische Methoden verweisen. Wenn Sie an Instanzmethoden binden möchten, müssen Sie auch die Instanz übergeben, auf der der erstellte Delegat die Methode aufrufen soll.

Sie wollen wahrscheinlich:

%Vor%

Außerdem wird Ihr Codebeispiel nicht kompiliert. Sie können die Varianz für Methodensignaturen nicht deklarieren. und Sie können die Implementierung in einer nicht abstrakten Klasse nicht weglassen.

Schließlich erstellt Delegate.CreateDelegate eine Delegate -Instanz , die nicht existieren kann, ohne ihre Typparameter zu kennen. Daher können Sie nicht an classyDelegate & lt;, & gt; binden, Sie müssen die beteiligten Typen kennen.

    
driis 26.04.2010, 16:22
quelle