c# - 将自定义类的数组存储在设置文件中

标签 c# arrays class app-config setting

我有一节课:

public class CustomClass
{
    public string Columns;
    public string Filter;

    public string SourceDB;
    public string SourceTable;

    public string DestinationDB;
    public string DestinationTable;
}

在用户设置中,我需要存储一个CustomClass数组。这是因为我需要用户能够在 app.config 文件中指定多个 CustomClass。

最佳答案

您必须首先在项目设置文件中创建一个设置,我们将其命名为CustomClasses。下一部分有点棘手,因为它涉及编辑 Settings.settings 文件的 XML:

<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" 
              CurrentProfile="(Default)" 
              GeneratedClassNamespace="ConsoleApplication1.Properties" 
              GeneratedClassName="Settings">
  <Profiles />
  <Settings>
    <Setting Name="CustomClasses" 
             GenerateDefaultValueInCode="false" 
             Type="System.Collections.Generic.List&lt;ConsoleApplication1.CustomClass&gt;" 
             Scope="User">
    </Setting>
  </Settings>
</SettingsFile>

如果您打开 Settings.Designer.cs 文件,您现在应该拥有:

[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public global::System.Collections.Generic
    .List<ConsoleApplication1.CustomClass> CustomClasses {
    get {
        return ((global::System.Collections.Generic
            .List<ConsoleApplication1.CustomClass>)(this["CustomClasses"]));
    }
    set {
        this["CustomClasses"] = value;
    }
}

您可以将设置保存在应用程序中:

class Program
{
    static void Main(string[] args)
    {
        Properties.Settings.Default.CustomClasses = new List<CustomClass>() {
            new CustomClass(){Columns="columns1"},
            new CustomClass(){Columns="columns2"},
            new CustomClass(){Columns="columns3"},
            new CustomClass(){Columns="columns4"}
        };
        Properties.Settings.Default.Save();
    }
}

关于c# - 将自定义类的数组存储在设置文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17939513/

相关文章:

c# - 不记名 token 无效

ruby - 使用可枚举的内置 Ruby 访问和操作嵌套数据

php - 在构造函数中注入(inject)所有变量或使用 setter 并在未设置时抛出异常是更好的做法吗?

java构造函数访问(如果我们在子类中有私有(private)构造函数)

c# - WPF:使用 GridSplitter 隐藏网格行

c# - 关于 PostgreSQL 的 Dapper SQL 查询和参数的问题

c# - 为什么在 C# 中使用 float.NaN != double.NaN?

java - 数组边界检查可以静态执行吗?

javascript - 数组在任何给定时间仅限于一项的问题

c# - 如何限定一个类只能在类库项目中使用?