【问题标题】:Is it possible to externally modify private variables of a class instance? [duplicate]是否可以从外部修改类实例的私有变量? [复制]
【发布时间】:2012-01-19 05:29:54
【问题描述】:

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

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

如果我能够窥视对象并记下我需要的变量的确切字节位置会怎样。然后我可以使用不安全代码直接修改这些偏移量的内存吗?有这样的可能吗?

【问题讨论】:

标签: c# .net oop memory structure


【解决方案1】:

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

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

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

【讨论】:

  • 是的,你可以并不意味着你应该:)
  • 反射必须谨慎使用,但它是一个强大的工具,有时可以为您节省大量时间/代码。 :D
猜你喜欢
  • 1970-01-01
  • 2020-04-07
  • 2013-09-20
  • 2015-01-21
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
  • 2011-05-13
  • 2011-01-23
相关资源
最近更新 更多