Versuchen Sie, zwei Wörterbücher mit ausgegebenen Delegaten zu erstellen, um beim dynamischen Abrufen / Festlegen der Werte von Eigenschaften eine verbesserte Leistung zu erzielen.
Code:
%Vor%Allerdings bekomme ich die folgende Ausnahme:
Kann wegen der Signatur oder der Sicherheit nicht an die Zielmethode gebunden werden Die Transparenz ist nicht mit der des Delegattyps kompatibel.
Nach dem, was ich gelesen habe, wird dies durch Eigenschaften des statischen / indexierten / Werttyps verursacht, die Properties
-Auflistung enthält keine statischen oder indexierten Eigenschaften, aber ich muss dies für Werttypeigenschaften wie int
und double
.
Wie kann ich die Getter / Setter erstellen, die ich brauche, während ich meinen Code abstrakt halte und Generika vermeide?
Ok fand meine Antwort auf diese Frage: MethodInfo.Invoice-Leistungsproblem
Genauer gesagt dieser Artikel: Reflektion und Erkundung der Delegierten ermöglichen
>Hier ist der Jist des Codes, mit dem ich gelandet bin:
%Vor%Die generierten Delegierten scheinen durchschnittlich 80% schneller zu sein als die Reflexion, also bin ich mit dem Ergebnis zufrieden!
Ich habe denselben Fehler bekommen. Ich habe die Expressions API verwendet, um dieses Problem zu beheben.
Hinweis: Zu referenzierende Methode ist
Der Name des Delegaten ist Formel und seine Signatur lautet wie folgt
%Vor%Erhalte MethodInfo, auf die als Delegate
verwiesen werden soll %Vor% Bereiten Sie Argumente des Delegaten als Parameterausdruck vor.
Argument 1: Dictionary<string, float>
Argument 2: List<Dictionary<string, float>>
var arg2Expression = Ausdruck.Parameter (typeof (Liste & gt;));
Generieren Sie die finale Methode Call Expression und geben Sie Delegate zurück.
%Vor%Tags und Links .net c# reflection reflection.emit