我有一个要保存到Settings
的“选项”对象
public class MainWindow
{
public MyOptions MyOptions => (MyOptions)DataContext;
public MainWindow()
{
InitializeComponent();
DataContext = Settings.Default.MyOptions ?? new MyOptions();
}
private void OnOptionsChanged(object sender, PropertyChangedEventArgs e)
{
Settings.Default.MyOptions = MyOptions;
Settings.Default.Save();
}
// etc.
}
MyOptions
包含(除其他外)一个结构值public class MyOptions
{
private MyStruct _myStruct;
public MyOptions()
{
_myStruct = someDefaultValue;
}
// etc.
}
MyStruct
仅包含一个整数:public struct MyStruct
{
private readonly int _someValue;
public MyStruct(int someValue)
{
_someValue = someValue;
}
// etc.
}
当我调用
Settings.Default.MyOptions = MyOptions;
时,所有值都正确设置,包括myStruct
。但是,当我重新启动程序并使用
DataContext = Settings.Default.MyOptions
加载选项时,除_myStruct(默认值为0)外,所有值均已正确加载!根据我阅读的所有内容,此代码应该可以工作。我尝试将
[Serializable]
属性添加到类/结构中,并实现了ISerializable
(我不必这样做),但是都没有帮助。我想念什么? 最佳答案
试试这个结构,在我的测试案例中,它以正确的方式序列化:
public struct MyStruct
{
public int SomeValue { get; set; }
}