0
我在使用反射時遇到了問題。C#反射問題
我有一個類ETSetting包含兩個對象:當前值和'默認'值。每當調用方法SetToDefault時,我想將當前值設置爲默認值。
這裏是我的功能:
public void SetToDefault() {
foreach (FieldInfo fi in Value.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance)) {
fi.SetValue(Value, fi.GetValue(defaultVal));
}
}
然而,當我打電話說......問題種種發生。我不能肯定地說,但就好像我正在讀取我不應該的內存部分(例如,當Value和defaultVal都是字符串時,我會得到各種不好的字符,如\ t,\ n和中文字符)。
很明顯我正在做一些我不該......但是什麼?
謝謝。
編輯:這是總的ETSetting類:
public sealed class ETSetting {
public object Value;
private object defaultVal;
public ETSetting(object defaultVal) {
Value = this.defaultVal = defaultVal;
}
public void SetToDefault() {
foreach (FieldInfo fi in Value.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance)) {
fi.SetValue(Value, fi.GetValue(defaultVal));
}
}
}
什麼是你'ETSetting'類的定義? – ChrisF
已被加入問題的回覆@ChrisF – Xenoprimate
你能提供一個簡短的,可編輯的例子來重現問題嗎? – Heinzi