反射帮助类

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

 

 

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

public   class  ReflectionHelp
{
    
public   int  TestProperties1 {  get set ; }
    
public   int  TestProperties2 {  get set ; }
    
public   int  TestProperties3 {  get set ; }
    
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();
    }
}

 

 

 

 

 

 

调用方法

 

 

ExpandedBlockStart.gif 代码
             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>");

 

 

转载于:https://www.cnblogs.com/jacd/archive/2010/04/07/1706314.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值