2011-12-13 65 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

相關問題