Unity基础入门分享c#反射入门

c#反射入门篇(Reflection)——PropertyInf

2019-06-15  本文已影响0人  懒_开果

也算记录自己的学习篇=。= 适合入门看 这里简单介绍下PropertyInfo和他基本的几个方法

简介

Property发现属性并提供对属性 元数据的访问。

1.如何获取?

1.如何获取?

Type.GetProperty(String) 获取该类的指定的名字String公开的属性 如果私有会为空
Type.GetProperty(String,BindingFlags) 获取该类的指定的名字String,和指定类型BindingFlags的属性
Type.GetProperties() 获取该类的所有公开属性
Type.GetProperties(BindingFlags) 获取该类的所有指定类型BindingFlags的函数方法

例子

先定义个类型
    public class Property
    {
        public int A { get; set; }
        public string B { get; set; }

        private int C { get; set; }
        private string D { get; set; }



    }
Type.GetMethod(String) 获取该类的指定的名字String公开的函数方法 如果私有会为空
Type.GetMethod(String,BindingFlags) 获取该类的指定的名字String,和指定类型BindingFlags的函数方
Type.GetMethods() 获取该类的所有公开的函数方法
Type.GetMethods(BindingFlags) 获取该类的所有指定类型BindingFlags的函数方法
            PropertyInfo property1 = typeof(Property).GetProperty("A");
            PropertyInfo property2 = typeof(Property).GetProperty("C");
            Console.WriteLine("公开的" + property1.Name);
            Console.WriteLine(property2!=null?"存在":"不存在");
            property2 = typeof(Property).GetProperty("C",BindingFlags.Instance|BindingFlags.NonPublic);//BindingFlags.Instance(对象) 和 BindingFlags.Static(静态) 必须有一个,
            Console.WriteLine(property2 != null ? "存在" : "不存在");
            PropertyInfo[] propertys1 = typeof(Property).GetProperties();
            PropertyInfo[] propertys2 = typeof(Property).GetProperties();
            foreach (var item in propertys1)
            {
                Console.WriteLine("公开的"+item.Name);
            }
           
            propertys2 = typeof(Property).GetProperties(BindingFlags.NonPublic|BindingFlags.Instance);
            foreach (var item in propertys2)
            {
                Console.WriteLine("私有的的" + item.Name);
            }
            Console.ReadKey();

结果 image.png

2.属性

这里就列几个基础的=。=完全的可以自己 去看c#的API

属性 作用
GetMethod 获取此属性的 get 访问器 可以看做是一个带返回值的函数,
SetMethod 获取此属性的 set 访问器 可以看做是带着一个赋值参数T的vold函数
CanRead/CanWrite 返回bool用于判断该属性值是否可读/写
PropertyType 获取该属性的类型Type
MemberType 返回一个枚举表示他是一个属性

3.方法 =。=我就写下基础的几个

        public class Property
     {
       public string a;

       public string A1 { get { Console.WriteLine("运行了一次A1的Get"); return a; } set { Console.WriteLine("运行了一次A1的Get"); a = value; } }
       public string A2 { private get { Console.WriteLine("运行了一次A2的私有的Get"); return a; }  set { Console.WriteLine("运行了一次A2的Set"); a = value; } }
   }

好了 差不多结束了=。= 不定期更新下篇

u3d萌新QQ群844087555——一个除了unity3d啥都会的群

上一篇 下一篇

猜你喜欢

热点阅读