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;
}