• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

可能大家都知道在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);

                   }

 

 


输出结果为:

 

          ----------------Method------------------

          Method:System.String get_Sex()

          Method:Void set_Sex(System.String)

          Method:System.String get_Name()

          Method:Void set_Name(System.String)

          Method:System.String GetName()

          Method:System.String ToString()

          Method:Boolean Equals(System.Object)

          Method:Int32 GetHashCode()

       Method:System.Type GetType()

       ---------------Field-------------------

       Field:System.String sex

       Field:System.String name

       --------------Member--------------------

       Member:System.String get_Sex()

       Member:Void set_Sex(System.String)

       Member:System.String get_Name()

       Member:Void set_Name(System.String)

       Member:System.String GetName()

       Member:System.String ToString()

       Member:Boolean Equals(System.Object)

       Member:Int32 GetHashCode()

       Member:System.Type GetType()

       Member:System.String Sex

       Member:System.String Name

       --------------Property--------------------

       Property:System.String Sex

       Property:System.String Name

       --------------Constructor--------------------

       Constructor:Void.ctor()

 


       请按任意键继续. . .
另外,我们发现属性Sex和Name编译以后变成了get_Sex,get_Name,set_Sex,set_Name,呵呵,看来还是更java一样


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
使用C#创建webservice及三种调用方式发布时间:2022-07-18
下一篇:
C#读取XML文档发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap