c#获取对象中非公开字段的值
时间: 2023-08-06 10:03:53 浏览: 106
在 C# 中,如果要获取对象中非公开字段的值,可以使用反射来实现。具体步骤如下:
1. 获取对象的类型
可以通过对象的 GetType() 方法获取其类型,例如:
```
Type type = obj.GetType();
```
2. 获取字段信息
可以使用 Type 类的 GetField() 或 GetFields() 方法获取字段信息,例如:
```
FieldInfo field = type.GetField("fieldName", BindingFlags.NonPublic | BindingFlags.Instance);
```
其中,"fieldName" 是要获取的字段的名称,BindingFlags.NonPublic 表示获取非公开字段,BindingFlags.Instance 表示获取实例字段。
3. 获取字段值
可以使用 FieldInfo 类的 GetValue() 方法获取字段的值,例如:
```
object value = field.GetValue(obj);
```
其中,obj 是要获取字段值的对象。
完整示例代码如下:
```
using System;
using System.Reflection;
class MyClass
{
private int myField = 123;
}
class Program
{
static void Main()
{
MyClass obj = new MyClass();
Type type = obj.GetType();
FieldInfo field = type.GetField("myField", BindingFlags.NonPublic | BindingFlags.Instance);
object value = field.GetValue(obj);
Console.WriteLine(value); // 输出 123
}
}
```
阅读全文