Csharp/C Sharp/Reflection/MemberInfo — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Версия 15:31, 26 мая 2010
Deeper Reflection:Finding Members
/*
A Programmer"s Introduction to C# (Second Edition)
by Eric Gunnerson
Publisher: Apress L.P.
ISBN: 1-893115-62-3
*/
// 36 - Deeper into C#\Deeper Reflection\Finding Members
// copyright 2000 Eric Gunnerson
using System;
using System.Reflection;
class MyClass
{
MyClass() {}
static void Process() {}
public int DoThatThing(int i, Decimal d, string[] args)
{
return 55;
}
public int value = 0;
public float log = 1.0f;
public static int value2 = 44;
}
public class DeeperReflectionFindingMembers
{
public static void Main(String[] args)
{
// iterate through the fields of the class
Console.WriteLine("Fields of MyClass");
Type t = typeof (MyClass);
foreach (MemberInfo m in t.GetFields())
{
Console.WriteLine("{0}", m);
}
// and iterate through the methods of the class
Console.WriteLine("Methods of MyClass");
foreach (MethodInfo m in t.GetMethods())
{
Console.WriteLine("{0}", m);
foreach (ParameterInfo p in m.GetParameters())
{
Console.WriteLine(" Param: {0} {1}",
p.ParameterType, p.Name);
}
}
}
}
Get MethodInfo and MemberInfo
using System;
using System.Reflection;
public class Apple {
public int nSeeds;
public void Ripen() {
}
}
public class TypeOfApp {
static void Main(string[] args) {
Type t = typeof(Apple);
string className = t.ToString();
Console.WriteLine(className);
Console.WriteLine(className);
MethodInfo[] methods = t.GetMethods();
foreach (MethodInfo method in methods) {
Console.WriteLine(method.ToString());
}
Console.WriteLine(className);
MemberInfo[] allMembers = t.GetMembers();
foreach (MemberInfo member in allMembers) {
Console.WriteLine(member.ToString());
}
}
}
Get variable base type and public numbers
using System;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
class MainClass {
static void Main() {
Type t = typeof(double);
Console.WriteLine("Type Name: " + t.Name);
Console.WriteLine("Full Name: " + t.FullName);
Console.WriteLine("Namespace: " + t.Namespace);
Type tBase = t.BaseType;
if (tBase != null)
Console.WriteLine("Base Type:" + tBase.Name);
Type tUnderlyingSystem = t.UnderlyingSystemType;
if (tUnderlyingSystem != null)
Console.WriteLine("UnderlyingSystem Type:" + tUnderlyingSystem.Name);
Console.WriteLine("\nPUBLIC MEMBERS:");
MemberInfo[] Members = t.GetMembers();
foreach (MemberInfo NextMember in Members) {
Console.WriteLine(NextMember.DeclaringType + " " + NextMember.MemberType + " " + NextMember.Name);
}
}
}