反射获取,类型,字段,属性,方法,模块,程序集,构造函数,事件等信息

 

 

代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Reflection;
using System.Text;

public class ReflectionHelp
{
    
public int TestProperties1 { getset; }
    
public int TestProperties2 { getset; }
    
public int TestProperties3 { getset; }
    
public ReflectionHelp()
    { 
    } 
    
/// <summary>
    
/// 返回T的类型 
    
/// </summary>
    
/// <typeparam name="T"></typeparam>
    
/// <param name="name"></param>
    
/// <returns></returns>
    public static  string TypeOfT<T>()
    {
        Type t 
= typeof(T);
        
return t.ToString();
    } 
    
/// <summary>
    
/// 通过实例返回T的类型 
    
/// </summary>
    
/// <typeparam name="T"></typeparam>
    
/// <param name="name"></param>
    
/// <returns></returns>
    public static string TypeOfEntity<T>(T name)
    {
        Type t 
= name.GetType();//实例
        return t.ToString();
    } 
    
/// <summary>
    
/// 通过实例返回当前程序集路径
    
/// </summary>
    
/// <typeparam name="T"></typeparam>
    
/// <param name="name"></param>
    
/// <returns></returns>
    public static string AssemblyLocationOfEntity<T>(T name)
    {
        Type t 
= name.GetType();
        Assembly asm 
= t.Assembly;
        
return asm.Location;//当前路径
    } 
    
/// <summary>
    
/// 通过实例返回当前所有类型
    
/// </summary>
    
/// <typeparam name="T"></typeparam>
    
/// <param name="name"></param>
    
/// <returns></returns>
    public static string AssemblyOfTypes<T>(T name)
    {
        Type t 
= name.GetType();
        Assembly asm 
= t.Assembly;
        StringBuilder sb 
= new StringBuilder();
        Type[] types 
= asm.GetTypes();
        
foreach (Type item in types)
        {
            sb.Append(item);
            sb.Append(
"</br>");
        }
        
return sb.ToString();
    }
    
/// <summary>
    
/// 通过实例返回当前程序集所有模块信息
    
/// </summary>
    
/// <typeparam name="T"></typeparam>
    
/// <param name="name"></param>
    
/// <returns></returns>
    public static string AssemblyModules<T>(T name)
    {
        Type t 
= name.GetType();
        Assembly asm 
= t.Assembly;
        StringBuilder sb 
= new StringBuilder();
        Module[] types 
= asm.GetModules();
        
foreach (Module item in types)
        {
            sb.Append(item.Name);
            sb.Append(
"</br>");
        }
        
return sb.ToString();
    }

    
/// <summary>
    
/// 通过实例返回当前程序集所有字段信息
    
/// </summary>
    
/// <typeparam name="T"></typeparam>
    
/// <param name="name"></param>
    
/// <returns></returns>
    public static string FieldsOfEntity<T>(T name)
    {
        Type t 
= name.GetType();
        StringBuilder sb 
= new StringBuilder();
        FieldInfo[] field 
= t.GetFields();
        
foreach (FieldInfo item in field)
        {
            sb.Append(
"name:"+item.Name);
            sb.Append(
"  type:" + item.FieldType);
            sb.Append(
"  Attributes:" + item.Attributes);
            sb.Append(
"</br>");
        }
        
return sb.ToString();
    }

    
/// <summary>
    
/// 通过实例返回当前程序集所有属性
    
/// </summary>
    
/// <typeparam name="T"></typeparam>
    
/// <param name="name"></param>
    
/// <returns></returns>
    public static string GetPropertiesOfT<T>()
    {
        Type t 
= typeof(T);
        StringBuilder sb 
= new StringBuilder();
        PropertyInfo[] field 
= t.GetProperties();
        
foreach (PropertyInfo item in field)
        {
            sb.Append(
"    name:" + item.Name);
            sb.Append(
"    type:" + item.PropertyType);
            sb.Append(
"    Attributes:" + item.Attributes);
            sb.Append(
"    IsRead:" + item.CanRead);
            sb.Append(
"    IsWrite:" + item.CanWrite);
            sb.Append(
"</br>");
        }
        
return sb.ToString();
    }

    
/// <summary>
    
///返回T的方法
    
/// </summary>
    
/// <typeparam name="T"></typeparam>
    
/// <param name="name"></param>
    
/// <returns></returns>
    public static string GetMethodInfoOfT<T>()
    {
        Type t 
= typeof(T);
        StringBuilder sb 
= new StringBuilder();
        MethodInfo[] methods 
= t.GetMethods();
        
foreach (MethodInfo item in methods)
        {
            sb.Append(
"    name:" + item.Name);
            sb.Append(
"    Attributes:" + item.Attributes);
            sb.Append(
"    返回类型:" + item.ReturnType);
            sb.Append(
"</br>");
        }
        
return sb.ToString();
    }

    
/// <summary>
    
///返回T的事件
    
/// </summary>
    
/// <typeparam name="T"></typeparam>
    
/// <param name="name"></param>
    
/// <returns></returns>
    public static string GetEventInfoOfT<T>()
    {
        Type t 
= typeof(T);
        StringBuilder sb 
= new StringBuilder();
        EventInfo[] methods 
= t.GetEvents();
        
foreach (EventInfo item in methods)
        {
            sb.Append(
"name:" + item.Name);
            sb.Append(
"  ;         DeclaringType:" + item.DeclaringType); 
            sb.Append(
"</br>");
        }
        
return sb.ToString();
    }

    
/// <summary>
    
///返回T的所有构造函数
    
/// </summary>
    
/// <typeparam name="T"></typeparam>
    
/// <param name="name"></param>
    
/// <returns></returns>
    public static string GetConstructorInfoOfT<T>()
    {
        Type t 
= typeof(T);
        StringBuilder sb 
= new StringBuilder();
        ConstructorInfo[] cons 
= t.GetConstructors();
        
foreach (ConstructorInfo item in cons)
        {
            sb.Append(
"构造函数:" + item.Name);
            sb.Append(
"属性:" + item.Attributes);
            sb.Append(
"</br>");
        }
        
return sb.ToString();
    }
}

 

 

 

 

 

 

调用方法

 

 

代码
            string name = "发表于博客园2010-04-07 wsenmin 泡泡网工";
            
//double myd = 1.001;
            
//Response.Write("返回实例的类型 :" + ReflectionHelp.TypeOfEntity<double>(myd) + "</br>");

            
//Response.Write("返回程序集引用的所有类型:" + ReflectionHelp.AssemblyOfTypes<string>(name) + "</br>");
            
//Response.Write("返回程序集所有模块信息:" + ReflectionHelp.AssemblyModules<string>(name) + "</br>");
            
//Response.Write("返回程序集路径:" + ReflectionHelp.AssemblyLocationOfEntity<string>(name) + "</br>");
           
            
//Response.Write("返回T的类型:" + ReflectionHelp.TypeOfT<_Default>() + "</br>");
            
//Response.Write("返回T所有属性 :" + ReflectionHelp.GetPropertiesOfT<ReflectionHelp>() + "</br>");
            
//Response.Write("返回T所有方法 :" + ReflectionHelp.GetMethodInfoOfT<ReflectionHelp>() + "</br>");
            
//Response.Write("返回T所有事件 :" + ReflectionHelp.GetEventInfoOfT<_Default>() + "</br>");
            
//Response.Write("返回T所有构造函数 :" + ReflectionHelp.GetConstructorInfoOfT<ReflectionHelp>() + "</br>");

 

 

posted on 2010-04-07 14:52  wsenmin  阅读(425)  评论(1编辑  收藏  举报