纯自学的新手,网上一直没有找到想要的效果,今天终于搞定了,记录一下。
已知类名的情况下遍历其属性名和属性值。
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));
}
}
已知类名和属性名,获取其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);
}
本文介绍了如何在C#中通过类名动态获取并遍历类的属性,以及如何获取和修改特定属性的值。使用Type和Activator创建对象,然后利用PropertyInfo进行操作。

4587

被折叠的 条评论
为什么被折叠?



