C#反射类中所有字段,属性,方法

发表于:2010-8-18 09:58

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:visionsky(51ctoblog)    来源:51Testing软件测试网采编

  可能大家都知道在C#中如何创建一个类,但对于类的结构可能大家不一定了解的很清楚,对于我来说,我之前也搞的不是很明白,今天,当我没事研究反射的时候突然发现了着一点。

  我们来看类的结构到底是什么

public class People        //类名
{   private static string name;    //字段     
    private string sex;//字段     
    public string Sex     //属性
    { 
       get { return sex; }      
       set { sex = value; }   
     }    
     public static string Name    //属性   
    {       
         get { return People.name; } 
         set { People.name = value; }  
    }
     private People() //构造函数 
    { 
 
    }    
     public static string GetName()    // 函数
    {      
     if (string.IsNullOrEmpty(name))
     {     
       name = "my name";  
      }    
       return name;
     }

  以上所有的构造函数、事件、字段、方法和属性都叫做成员,即Member

  运行下列代码:

Type t = typeof(People);
             Console.WriteLine("----------------Method------------------");
             MethodInfo[] methods = t.GetMethods( );
            foreach (MethodInfo method in methods)
            {
                Console.WriteLine("Method:" + method);
                //Console.WriteLine(method);
                //Console.WriteLine("返回值:" + method.ReturnParameter); 
            }
            Console.WriteLine("---------------Field-------------------");
            FieldInfo[] fields = t.GetFields(BindingFlags.NonPublic | BindingFlags.Instance|BindingFlags.Static);
            foreach (FieldInfo field in fields)
            {
                Console.WriteLine("Field:" + field);
            }
            Console.WriteLine("--------------Member--------------------");
            MemberInfo[] members = t.GetMembers();
            foreach (MemberInfo member in members)
            { 
               Console.WriteLine("Member:" + member);
            } 
           Console.WriteLine("--------------Property--------------------");
           PropertyInfo[] properties = t.GetProperties( );
           foreach (PropertyInfo property in properties)
           {
                Console.WriteLine("Property:" + property);
            }
             Console.WriteLine("--------------Constructor--------------------");                          ConstructorInfo[] constructors = t.GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance);
             foreach (ConstructorInfo constructor in constructors)
            {
                Console.WriteLine("Constructor:" + constructor);
            }

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号