C# 反射实例获取类属性

时间:2022-03-13 05:15:53

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