反射を使用する際に問題が発生しました。C#反射の問題
私は現在の値と 'デフォルト'の2つのオブジェクトを含むクラス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