c# reflection get internal property value

在 C# 中,通过反射获取一个对象的内部属性值可以使用 PropertyInfo.GetValue 方法。但是,如果这个属性是一个内部属性,你需要使用 BindingFlags 来获取它。以下是示例代码:

using System.Reflection;
// 定义一个类
class MyClass
    internal string MyProperty { get; set; } = "Hello World";
// 获取 MyClass 的实例
var obj = new MyClass();
// 获取 MyProperty 的值
var propertyInfo = obj.GetType().GetProperty("MyProperty", BindingFlags.Instance | BindingFlags.NonPublic);
var value = (string)propertyInfo.GetValue(obj);

在这个示例中,我们定义了一个 MyClass 类,其中有一个 MyProperty 属性,它被声明为 internal,表示只能在当前程序集内部访问。然后,我们创建了 MyClass 的一个实例,并通过反射获取了 MyProperty 的值。请注意,我们在调用 GetProperty 方法时,传递了 BindingFlags.Instance | BindingFlags.NonPublic 参数,以获取这个内部属性。

值得注意的是,使用反射获取内部属性的值可能会破坏封装性,并使代码更难以理解和维护。因此,应该尽可能避免在生产代码中使用反射来访问内部属性。

  •