如果无法访问类型(并且没有“ InternalsVisibleTo”等),则必须使用反射。但是,一个更好的问题是: 应该
你可以访问这些数据?它不是公共类型合同的一部分…在我看来,它打算被视为不透明的对象(出于其目的,而不是您的目的)。
您已经将其描述为公共实例字段;通过反射得到这个:
object obj = ...string value = (string)obj.GetType().GetField("test").GetValue(obj);如果它实际上是一个属性(不是字段):
string value = (string)obj.GetType().GetProperty("test").GetValue(obj,null);如果它是非公开的,则需要使用/ 的
BindingFlags重载。
GetField``GetProperty
除了重要的一点
:小心这样的反射;实现可能会在下一个版本中更改(破坏您的代码),或者可能被混淆(破坏您的代码),或者您可能没有足够的“信任”(破坏您的代码)。您发现图案了吗?



