C# 反射实例获取类属性

来源:互联网 发布:python开发安卓程序 编辑:程序博客网 时间:2024/06/05 15:34

C# 反射实例获取类属性

定义类以及类属性如下

public class AgentClass{    public int agentID    {        get;        private set;    }    public int level    {        get;        private set;    }    public int blood    {        get;        private set;    }    public byte moveSpeed    {        get;        private set;    }    public int power    {        get;        private set;    }    public float attackInterval    {        get;        private set;    }    public byte characterType    {        get;        private set;    }    public byte campType    {        get;        private set;    }}

获取类以及属性如下

// Use this for initialization    void Start () {        AgentClass agentClass = GetTypeClass<AgentClass>();        Debug.LogError("agentID   " + agentClass.agentID);        Debug.LogError("level     " + agentClass.level);        Debug.LogError("blood     " + agentClass.blood);        Debug.LogError("moveSpeed " + agentClass.moveSpeed);    }    public T GetTypeClass<T>() where T : new()    {        T Tclass = new T();  //实例化一个 T 类对象        //获取该类类型          System.Type t = Tclass.GetType();        //得到所有属性        System.Reflection.PropertyInfo[] propertyInfos = t.GetProperties(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);        // 遍历所有属性        for (int i = 0; i < propertyInfos.Length; i++)        {            PropertyInfo property = propertyInfos[i];            // 获取属性名            Debug.LogError("property name : " + property.Name);            // 给属性赋值            property.SetValue(Tclass, System.Convert.ChangeType( i, property.PropertyType), null);            // 获取属性值            Debug.LogError(property.GetValue(Tclass, null));        }        return Tclass;    }
0 0