PropertyInfo類可以獲取私有屬性,但是需要使用BindingFlags參數來指定要獲取的屬性的訪問權限。例如,可以使用BindingFlags.NonPublic來獲取私有屬性。以下是一個示例代碼:
using System;
using System.Reflection;
public class MyClass
{
private int myPrivateField = 10;
}
class Program
{
static void Main()
{
MyClass obj = new MyClass();
Type type = obj.GetType();
BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Instance;
PropertyInfo propertyInfo = type.GetProperty("myPrivateField", flags);
Console.WriteLine(propertyInfo.GetValue(obj)); // Output: 10
}
}
在上面的示例中,使用BindingFlags.NonPublic和BindingFlags.Instance來獲取私有屬性myPrivateField的值。