您的位置:首页 > 其它

反射整理学习<一>(转)

2012-04-26 13:23 316 查看
前言:

由于身边也没什么学习资料,也就一边利用网络一边自己理解整理,慢慢地步入神秘的反射机制。

TyepTest Code



using System;
using System.Reflection;

namespace TypeInfoTest
{
public class Program
{
static void Main(string[] args)
{
GetTypeInfo(" TypeInfoTest.Program");
Console.ReadKey();
}

private static void GetTypeInfo(string className)
{
try
{
Type type = Type.GetType(className);
Console.WriteLine("类型名:" + type.Name);
Console.WriteLine("类的全名:" + type.FullName);
Console.WriteLine("命名空间名:" + type.Namespace);
Console.WriteLine("程序集名:" + type.Assembly);
Console.WriteLine("模块名:" + type.Module);
Console.WriteLine("基类名" + type.BaseType);
Console.WriteLine("运行时映射类名:" + type.UnderlyingSystemType);
Console.WriteLine("是否是类:" + type.IsClass);
Console.WriteLine("是否是从COM类型库导入的:"+type.IsImport);//是否应用了ComImportAttribute属性
Console.WriteLine("是否是泛型类型:"+type.IsGenericType);
Console.WriteLine("是否是接口:" + type.IsInterface);
Console.WriteLine("是否是抽象类:" + type.IsAbstract);
Console.WriteLine("是否是数组类:" + type.IsArray);
Console.WriteLine("是否是值类型:" + type.IsValueType);
Console.WriteLine("是否是基本类型:" + type.IsPrimitive);
Console.WriteLine("是否是公共类型:"+type.IsPublic);
Console.WriteLine("关联的属性:"+type.Attributes);
Console.WriteLine("句柄:"+type.TypeHandle);
Console.WriteLine("===============MakeArrayType=================");
Type t = typeof(Program).MakeArrayType();
Console.WriteLine("Program类型的数组: {0}", t);
t = typeof(Program).MakeArrayType(2);
Console.WriteLine("Program类型的数组: {0}", t);
try
{
t = typeof(Program).MakeArrayType(-1);
}
catch (Exception ex)
{
Console.WriteLine("{0}", ex);
}
Console.WriteLine("===============MakeArrayType=================");
Console.WriteLine("\n===============.GetMethods=================");
MethodInfo[] Minfos = typeof(Program).GetMethods();
foreach (MethodInfo i in Minfos)
{
Console.WriteLine(i.Name);
}
Console.WriteLine("===============.GetMethods=================\n");
#region "类的公共成员"
Console.WriteLine("类的公共成员:");
foreach (MemberInfo info in type.GetMembers())
{
Console.WriteLine("\t{0} :{1}", info.MemberType, info);
}
#endregion
#region "类的字段成员"
Console.WriteLine("\t类的字段成员:");
if (type.GetFields().Length > 0)
{
foreach (FieldInfo field in type.GetFields())
{
Console.WriteLine("\t{0} :{1}", field.MemberType, field);
}
}
else
{
Console.WriteLine("该类型不包含字段!");
}
#endregion
}
catch (Exception ex)
{

Console.WriteLine(ex.Message);
}
}
}
}




运行结果:



转自:/article/5009874.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: