C#反射GetValue
时间: 2024-09-14 09:12:30 浏览: 69
在C#中,反射是一种强大的工具,它允许程序在运行时检查和操作类型、字段、属性和方法。`GetValue()`方法是.NET Framework提供的Reflection API的一部分,主要用于从对象动态获取其值,特别是当值是私有或者在运行时不知道的字段或属性时。
`System.Reflection.FieldInfo.GetValue(object obj)` 和 `System.Reflection.PropertyInfo.GetValue(object obj, object[] args)` 这两个方法都是用于此目的。例如:
```csharp
FieldInfo field = obj.GetType().GetField("fieldName");
object fieldValue = field.GetValue(obj);
PropertyInfo property = obj.GetType().GetProperty("propertyName");
object propertyValue = property.GetValue(obj, null);
```
这里,`obj`是要从中获取值的对象,`"fieldName"` 或 `"propertyName"` 是你想要访问的字段名或属性名。如果没有提供参数数组,`GetValue()`通常用于无参属性或字段;如果有参数,你可以传递给方法作为参数值。
通过反射`GetValue()`, 开发者可以在运行时动态地访问和修改对象的状态,这在单元测试、配置管理等场景中非常有用。然而,频繁或不当使用反射可能会降低性能,因为它涉及类型加载和类型解析。
阅读全文