Verwendung von Extension Methode über Reflection

06/03/2009 - 09:29 von Andre Grumbach | Report spam
Hallo zusammen,
ich habe eine Standard Klasse (z.B. String) erweitert, wodurch diese Objekte
weitere Methoden besitzten (z.B. IsGuid()).

Dies funktioniert erst einmal wunderbar.

string myString = "ABC"
myString.IsGuid() làsst sich wunderbar aufrufen.

Nun versuche ich das ganze aber über Reflection zu machen.

MethodInfo method = myString.GetType().GetMethod("IsGuid");
Leider ist Method aber immer NULL.

Wie komm ich den über Reflection an meine Erweiterungs Methoden dran?
Diese liegen ausgelagert in einer seperaten DLL, die ich oben eingebunden
habe.

Danke,
Andre
 

Lesen sie die antworten

#1 Frank Dzaebel
06/03/2009 - 10:10 | Warnen spam
Hallo Andre,

Wie komm ich den über Reflection an meine Erweiterungs Methoden dran?
Diese liegen ausgelagert in einer seperaten DLL, die ich oben
eingebunden habe.



Du kannst zum Beispiel die DLL nach Typen durchsuchen
(assembly.GetTypes .. etc.), die eine ExtensionAttribute haben
und statisch gebunden sind und die Methode nehmen, deren
erster Parameter mit dem Typ übereinstimmt, der erweitert ist.

Du musst wissen, dass eine "extension method" zur Zeit des
Kompilierens in den Aufruf der dahinterstehenden statischen
Methode in die IL umgesetzt wird. Also wirst Du auch über
Reflection direkt keine Erweiterungsmethoden bekommen.

[C# Reflection to Identify Extension Methods - Stack Overflow]
http://stackoverflow.com/questions/...on-methods


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen