是否可以从外部修改类实例的私有变量?

时间:2011-12-13 10:24:59

标签: c# .net oop memory structure

  

可能重复:
  Can I change a private readonly field in C# using reflection?

我需要修改数据结构类,但数据隐藏在只读属性后面。我可以使用任何技术修改类中的私有变量吗?

如果我能够查看对象并记下我需要的变量的确切字节位置,该怎么办?然后我可以使用不安全的代码直接修改那些偏移量的内存吗?这样的事情可能吗?

1 个答案:

答案 0 :(得分:2)

我认为您可以使用Reflection技术来修改实例的变量。这并不难:

typeof(MyClassType).GetField("TheField",BindingFlags.Instance|BindingFlags.NonPublic).SetValue(ClassInstance,NewValue);

请记住包含system.reflection命名空间。