Frage

Wie würden Sie einen Algorithmus implementieren, um die richtige Methodenüberlastung auszuwählen, wenn Sie die folgende Methode überschreiben DynamicObject?

bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
War es hilfreich?

Lösung

Wenn dieses Überlastungsproblem auf die Weiterleitung an statisch implementierte Methoden zurückzuführen ist. Eine Lösung könnte darin bestehen, die DLR nur die Arbeit für Sie erledigen zu lassen. Open Source Dynamit hat eine statische Methode, die den gesamten DLR -Bindungscode erstellt, das angemessen zwischengespeichert wird und dann aufgerufen wird, und der DLR -Binder überlastet eine Überlastung. Beispiel. In diesem Beispiel werden benannte/optionale Paramente und abgeleitete Generika in der Überlastauflösung verarbeitet. DynamicObject enthält jedoch keine Erklärungsgenerika oder Ref -Out -Params im Aufruf.

Andere Tipps

Es ist nicht einfach, da Sie Dinge wie implizite Typumwandlungen und Parameter der variablen Länge berücksichtigen müssen (die Arrays zugeordnet werden müssen).

Das Methodcallresolver Klasse in der Zentrum Framework bietet ein Beispiel dafür, wie man eine Matching -Methode findet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top