Csharp/C Sharp by API/System.Reflection/BindingFlags — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
(нет различий)
|
Текущая версия на 15:11, 26 мая 2010
BindingFlags.DeclaredOnly
<source lang="csharp"> using System; using System.Collections; using System.Reflection; public class MainClass{
public static void Main() { Assembly LoadedAsm = Assembly.LoadFrom("yourName"); Console.WriteLine(LoadedAsm.FullName); Type[] LoadedTypes = LoadedAsm.GetTypes(); if (LoadedTypes.Length == 0) { Console.WriteLine("\tNo Types!"); } else { Console.WriteLine("\tFound Types:"); foreach (Type t in LoadedTypes) { if (t.IsPublic && !t.IsEnum && !t.IsValueType) { Console.WriteLine("Type: {0}", t.FullName); PrintMethodInfo(t); } } } } private static void PrintMethodInfo(Type t) { MethodInfo[] methods = t.GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static); foreach (MethodInfo m in methods) { if (m.IsStatic) Console.WriteLine("Static Method: {0}", m.Name); else Console.WriteLine("Method: {0}", m.Name); Console.WriteLine("\tReturns {0}", m.ReturnType.FullName); ParameterInfo[] pList = m.GetParameters(); if (pList.Length == 0) { Console.WriteLine("\tNo Parameters"); } else { Console.WriteLine("\tParameter List:"); foreach (ParameterInfo p in pList) { Console.WriteLine("\t\t{0} {1}", p.ParameterType.FullName,p.Name); } Console.WriteLine(); } } }
}
</source>
BindingFlags.Instance
<source lang="csharp"> using System; using System.Reflection; class DumpType {
public static void Main() { MyClass zObj = new MyClass(); Type tObj = zObj.GetType(); MemberInfo[] members = tObj.GetMembers(BindingFlags.Instance | BindingFlags.NonPublic); foreach (MemberInfo member in members) { Console.WriteLine(member.Name); } members = tObj.GetMembers(BindingFlags.Public | BindingFlags.Static); Console.WriteLine(" "); foreach (MemberInfo member in members) { Console.WriteLine(member.Name); } }
} class MyClass {
private int vara = 5; public int PropA { get { return vara; } } static public void MethodA() { Console.WriteLine("MyClass::MethodA called."); }
}
</source>