2017-03-03 3 views
-1

zur Liste eine Liste aus Klassen in einer bestimmten .NET-Assembly und ein gegebener Namensraum würde ich etwas tun, wie definiert Um wenn es eine Delegatendeklaration wieWie alle Teilnehmer von einer .NET-Assembly

public delegate void MyDelegate() 

MyDelegate auch durch die obige Schleife verarbeitet wird.

Ich möchte nur durch Delegate-Typen Schleife. Ich würde erwarten, dass Typ Klasse etwas wie IsDelegate Eigenschaft haben, aber es gibt keine.

Ich sehe, dass die Typen Vertreter Vertreter haben Basistyp System.MulticastDelegate - ist es der richtige Filter oder fehlt mir etwas?

+0

Überprüfen Sie, ob der Typ zu "Delegate" (oder "MulticastDelegate", kein Unterschied in der realen Welt) zuweisbar ist – leppie

Antwort

0
foreach (var type in assembly.GetTypes() 
     .Where(t => t.IsClass && t.Namespace == @namespace && t.IsDelegate())) 
{     
    //process delegate type 
} 

public static class TypeExtensions 
{ 
    public static bool IsDelegate(this Type type) 
    { 
     return type.BaseType == typeof(MulticastDelegate); 
    } 
} 
Verwandte Themen