更清洁的方法将应用程序设置初始化为默认值

时间:2017-01-04 18:09:29

标签: c# wpf application-settings

我有一个名为LinearTransformation的类,我想在执行期间设置它们的值,以便下次使用它们,然后可以覆盖等等。

目前,我正在验证是否存在以前的值,如果没有,我将该值设置为默认值。

问题是:我的代码变得重复,丑陋,并且大部分代码仅在客户端计算机上第一次运行新安装时才有用。

有没有更优雅的方法来实现这一目标?

    // This method is run when the app starts
    private void LoadCalibrações()
    {
        if (Properties.Settings.Default.CalibXEsq == null)
        {
            Properties.Settings.Default.CalibXEsq = new TransformaçãoLinear();
        }

        if (Properties.Settings.Default.CalibYEsq == null)
        {
            Properties.Settings.Default.CalibYEsq = new TransformaçãoLinear();
        }

        if (Properties.Settings.Default.CalibXDir == null)
        {
            Properties.Settings.Default.CalibXDir = new TransformaçãoLinear();
        }

        if (Properties.Settings.Default.CalibYDir == null)
        {
            Properties.Settings.Default.CalibYDir = new TransformaçãoLinear();
        }

        Properties.Settings.Default.Save();


        _calibrações = new[]
        {
            Properties.Settings.Default.CalibXEsq,
            Properties.Settings.Default.CalibYEsq,
            Properties.Settings.Default.CalibXDir,
            Properties.Settings.Default.CalibYDir
        };
    }

1 个答案:

答案 0 :(得分:1)

如果你只需要填充阵列......

var settings = Properties.Settings.Default;
_calibrações = new[]
{
    settings.CalibXEsq ?? new TransformaçãoLinear(),
    settings.CalibYEsq ?? new TransformaçãoLinear(),
    settings.CalibXDir ?? new TransformaçãoLinear(),
    settings.CalibYDir ?? new TransformaçãoLinear(),
};

...否则

var settings = Properties.Settings.Default;
_calibrações = new[]
{
    settings.CalibXEsq ?? (settings.CalibXEsq = new TransformaçãoLinear()),
    settings.CalibYEsq ?? (settings.CalibYEsq = new TransformaçãoLinear()),
    settings.CalibXDir ?? (settings.CalibXDir = new TransformaçãoLinear()),
    settings.CalibYDir ?? (settings.CalibYDir = new TransformaçãoLinear()),
};