2011-12-13 48 views
1

可能重复:
Can I change a private readonly field in C# using reflection?是否可以从外部修改类实例的私有变量?

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

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

+4

在这里看到:http://stackoverflow.com/questions/934930/can-i-change-a-private-readonly-field-in-c-sharp-using-reflection –

回答

2

我想你可以使用Reflection技术来修改实例的变量。这不是难题:

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

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

+0

是的,你可以不意味着你应该:) – lnu

+0

反射必须谨慎使用,但它是一个强大的工具,有时可以节省你很多时间/代码。 :d – Jonathan

相关问题