C# 更改所有设置文件值

C# Change all Settings files values

我有一些表格,并为每个表格制作了一个包含

的设置文件
int X
int Y
bool FirstRun

我为用户保存这些,以便每次启动程序时 window 的位置都在同一个位置。我在想我会添加一个按钮来将它们重置为标准值。

我找到了一种将它们保存到列表的方法

list<Type> settingsList = new list<Type>();

然后

settingsList.Add(typeof(SettingsFileName));

但是有没有办法制作一个 foreach 循环来改变它们,还是我需要手动为它们全部改变?

--编辑--

左侧最小设置文件将包含右侧所有设置文件截至目前

我用

保存文件
AdminKontoplanSettings.Default.X = this.Location.X;
AdminKontoplanSettings.Default.Y = this.Location.Y;
AdminKontoplanSettings.Default.Height = this.Height;

AdminKontoplanSettings.Default.Save();

我不确定你想要什么,但我认为这可能会有所帮助:

foreach (Type t in settingList)
{
  t.x = 0;
  t.y = 0;
}

这将更改您表单的所有位置。

如果您希望遍历您的设置文件,您应该考虑创建一个接口并让您的设置class继承它。
设置 class 是 partial classes,你有一个部分由设计者控制,另一个为你(从设计者那里你有一个按钮 "View code" 可以进入部分的这一部分class).

所以你的界面看起来像:

internal interface IMySettings
{
    int X { get; set; }
    int Y { get; set; }
    bool FirstRun { get; set; }
    void Save(); 
}

Save是允许迭代时进行保存操作

您的设置文件可能如下所示:

internal sealed partial class MySettings : IMySettings

然后,将所有设置加载到 List<IMySettings> 字段并遍历它们。
棘手的部分是将它们加载到列表中,您可以通过反射或手动完成:

var mySettingList = new List<IMySettings> {AdminKontoplanSettings.Default, MySetting.Defalut, AnotherSettings.Default ....}

然后,在你"reset"按钮onclick方法:

foreach (var setting in this.mySettingList)
{
  setting.X = 0;
  setting.Y = 0;
  setting.FirstRun = true;
  setting.Save();
}