Forum: Programmieren allgemein
C#
by Phoenix,
23. Aug 2010
Du kannst sowas machen:
var results = from type in someAssembly.GetTypes()
where typeof(IFoo).IsAssignableFrom(type)
select type;
Du hast in results dann eine Liste aller Typen, die Dein Flagging interface haben.
Der Aufruf sieht dann in etwa so aus:
Forum: Programmieren allgemein
C#
by Phoenix,
23. Aug 2010
Hast Du Einfluss auf die Klassen die Du da verwendest? Kannst Du die z.B. mit einem Custom Attribut versehen oder von einem bestimmten Interface ableiten (ich weiss, bei statischen Methoden ist das eher Sinnlos, aber z.B. INamingContainer ist auch nur ein flagging interface das keine Methoden oder Properties vorgibt).
Das macht dann das Ermitteln der entsprechenden Typen ziemlich einfach.
...
Forum: Programmieren allgemein
C#
by Phoenix,
23. Aug 2010
Du kannst doch einfach per reflection hergehen, die statischen Methode ermitteln und aufrufen.
Um die Typen zu finden die diese Methode implementieren kannst du im Prinzip hergehen und mittels linq abfragen, welche typen eine statische Methode dieses namens haben. Das ist aber nicht gerade Performant, weil die Abfrage alle typen nach der Methode abfragt.