无法使用反射访问受保护的 属性
Can't access protected property with Reflection
在断点处调试时,我无法使用反射访问 属性 Rectangle_1
(和其他同级属性),它们在手表 window 中可见.
立即Window,如果我尝试
typeof(LoadRecipeSlots).GetProperty("Rectangle_1")
结果是null
。
但如果我尝试
typeof(LoadRecipeSlots).GetProperty("Visible")
结果是
{Boolean Visible}
Attributes: None
CanRead: true
CanWrite: true
CustomAttributes: Count = 1
DeclaringType: DeclaredProperties = {System.Reflection.PropertyInfo[65]}
GetMethod: {Boolean get_Visible()}
IsSpecialName: false
MemberType: Property
MetadataToken: 385877353
Module: {ControlsCF.dll}
Name: "Visible"
PropertyType: DeclaredProperties = {System.Reflection.PropertyInfo[0]}
ReflectedType: DeclaredProperties = {System.Reflection.PropertyInfo[7]}
SetMethod: {Void set_Visible(Boolean)}
属性Visible
好像是parentclass的属性。
属性 Rectangle_1
在 LoadRecipeSlots
中受到保护,我正在尝试使用反射从部分 class 定义中访问它,但我无法做到去做。然而,属性 可作为此部分 class 定义中的代码访问。
大部分代码是由正在使用的工具 auto-generated iX Developer 编写的,因此我无法创建一个简洁的示例。如果遗漏了什么,请告诉我,我会尝试将其添加到问题中。
typeof(LoadRecipeSlots).GetProperty("Rectangle_1")
将仅搜索 public 个属性。由于您的 属性 受到保护,您需要指定还应搜索 non-public 属性:
typeof(LoadRecipeSlots).GetProperty("Rectangle_1", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
这是因为您要访问的 属性 是受保护的(而不是 public),而 GetProperty(String) 默认情况下只有 returns public 属性。
您可以像下面那样使用 GetProperty(String, BindingFlags) 来检索您受保护的 属性:
typeof(LoadRecipeSlots).GetProperty("Rectangle_1", BindingFlags.NonPublic)
在断点处调试时,我无法使用反射访问 属性 Rectangle_1
(和其他同级属性),它们在手表 window 中可见.
立即Window,如果我尝试
typeof(LoadRecipeSlots).GetProperty("Rectangle_1")
结果是null
。
但如果我尝试
typeof(LoadRecipeSlots).GetProperty("Visible")
结果是
{Boolean Visible}
Attributes: None
CanRead: true
CanWrite: true
CustomAttributes: Count = 1
DeclaringType: DeclaredProperties = {System.Reflection.PropertyInfo[65]}
GetMethod: {Boolean get_Visible()}
IsSpecialName: false
MemberType: Property
MetadataToken: 385877353
Module: {ControlsCF.dll}
Name: "Visible"
PropertyType: DeclaredProperties = {System.Reflection.PropertyInfo[0]}
ReflectedType: DeclaredProperties = {System.Reflection.PropertyInfo[7]}
SetMethod: {Void set_Visible(Boolean)}
属性Visible
好像是parentclass的属性。
属性 Rectangle_1
在 LoadRecipeSlots
中受到保护,我正在尝试使用反射从部分 class 定义中访问它,但我无法做到去做。然而,属性 可作为此部分 class 定义中的代码访问。
大部分代码是由正在使用的工具 auto-generated iX Developer 编写的,因此我无法创建一个简洁的示例。如果遗漏了什么,请告诉我,我会尝试将其添加到问题中。
typeof(LoadRecipeSlots).GetProperty("Rectangle_1")
将仅搜索 public 个属性。由于您的 属性 受到保护,您需要指定还应搜索 non-public 属性:
typeof(LoadRecipeSlots).GetProperty("Rectangle_1", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
这是因为您要访问的 属性 是受保护的(而不是 public),而 GetProperty(String) 默认情况下只有 returns public 属性。
您可以像下面那样使用 GetProperty(String, BindingFlags) 来检索您受保护的 属性:
typeof(LoadRecipeSlots).GetProperty("Rectangle_1", BindingFlags.NonPublic)