12.5. Finding Members Within an Interface
Problem
You need to find one or more members, with a specific name or a part of a name that belongs to an interface.
Solution
Use the same technique outlined in Recipe 12.4, but filter out all types except
interfaces. The first overloaded version of the
FindIFaceMemberInAssembly
method finds a member
specified by the memberName
parameter in
all interfaces contained in an assembly. Its source code
is:
public static void FindIFaceMemberInAssembly(string asmPath, string memberName) { // delegate to the interface based one passing blank FindIFaceMemberInAssembly(asmPath, memberName, "*"); }
The second overloaded version of the
FindIFaceMemberInAssembly
method finds a member in
the interface specified by the
interfaceName
parameter. Its source code
is:
public static void FindIFaceMemberInAssembly(string asmPath, string memberName, string interfaceName) { Assembly asm = Assembly.LoadFrom(asmPath); foreach(Type asmType in asm.GetTypes( )) { if (asmType.IsInterface && (asmType.FullName.Equals(interfaceName) || interfaceName.Equals("*"))) { if (asmType.GetMember(memberName, MemberTypes.All, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.IgnoreCase).Length > 0) { foreach(MemberInfo iface in asmType.GetMember(memberName, MemberTypes.All, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.IgnoreCase)) { Console.WriteLine("Found member {0}.{1}", ...
Get C# Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.