unity中根据字符串,拿到类名和属性名,获取其属性值和修改属性值

本文介绍了如何在C#中通过类名动态获取并遍历类的属性,以及如何获取和修改特定属性的值。使用Type和Activator创建对象,然后利用PropertyInfo进行操作。

纯自学的新手,网上一直没有找到想要的效果,今天终于搞定了,记录一下。

  1. 已知类名的情况下遍历其属性名和属性值。

void GetTargetProperty(string _className)

{

        //通过字符串_className,获得名字为_className的类。

Type type = Type.GetType(_className);

//通过创建“type”类型的实例,获得数据类型为object的 "obj"。

object obj = Activator.CreateInstance(type);

//遍历 type.GetProperties() 中的所有 PropertyInfo属性信息。

foreach (PropertyInfo Chile in type.GetProperties())

{

//打印日志,观察遍历后的结果。

Debug.Log("Name: " + Chile.Name + " Value: " + Chile.GetValue(obj));

}

}

  1. 已知类名和属性名,获取其value 和 修改 value。

void GetTargetPropertyValue(string _className, string _propertyName) {

//通过字符串_className,获得名字为_className的类。

Type type = Type.GetType(_className);

//通过创建“type”类型的实例,获得数据类型为object的 "obj"。

object obj = Activator.CreateInstance(type);

//在类type中找到属性_propertyName,获取其属性值,这个值在obj里面。

var aaa = type.GetProperty(_propertyName).GetValue(obj);

//打印日志查看aaa的属性值,也就是_propertyName的属性值

//Debug.Log(aaa);

        //修改_propertyName的属性值为“明天会更好”

type.GetProperty(_propertyName).SetValue(obj, "明天会更好");

//获取修改后的属性值。

var bbb = type.GetProperty(_propertyName).GetValue(obj);

//打印修改后的属性值。

Debug.Log(bbb);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值