利用反射从C#字符串获取类的属性值

Posted xiaogeformax

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用反射从C#字符串获取类的属性值相关的知识,希望对你有一定的参考价值。

问题

在lua里面能很容易的去利用字符串去访问属性,但是在C#里面有时候就很棘手,特别是在字符串比较多的情况下。

方法

比如我们要读取player表里面的ID,Name,Age,Position。。。。。。
但是玩家表里面会有很多数据,我们在以上四项是比较容易去读的,但是有时候在比较复杂的情况下,我们只有“ID”,“Name”,“Age”,“Position”等字符串,但是希望去读取到属性。

这个时候,就需要利用到C#的反射了。


var nameOfProperty = "ID";
var propertyInfo =player.GetType().GetProperty(nameOfProperty);
var value = propertyInfo.GetValue(player, null);

同时说一下typeof 和GetType()

都是为了获取某个实例具体引用的数据类型System.Type。

1、GetType()方法继承自Object,所以C#中任何对象都具有GetType()方法,x.GetType(),其中x为变量名

2、typeof(x)中的x,必须是具体的类名、类型名称等,不可以是变量名称

GetProperty() 就是得到该类的成员变量。

以上是关于利用反射从C#字符串获取类的属性值的主要内容,如果未能解决你的问题,请参考以下文章

c# 如何通过反射 获取属性值

C#利用反射实现两个类的对象之间相同属性的值的复制

如何更改通过反射 C# 获取的属性值

利用反射获取一个类实例的所有属性名称和值 拼接为字符串

C#通过反射获取不同命名空间下的类(属性和方法)

C#反射技术的简单操作(读取和设置类的属性属性值)