正在尝试创建自定义局部设置文件 [英] Trying to create a custom partial settings file

查看:0
本文介绍了正在尝试创建自定义局部设置文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建自定义设置类来存储一些用户范围的设置。我在几个月前就这样做了,它运行得很好,但我记不住所有的细节,也无法再访问源代码。以下是我到目前为止的情况:

CustomSettings.cs

internal sealed partial class CustomSettings : global::System.Configuration.ApplicationSettingsBase
{
    private static CustomSettings defaultInstance = ((CustomSettings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new CustomSettings())));

    public static CustomSettings Default
    {
        get
        {
            return defaultInstance;
        }
    }

    [global::System.Configuration.UserScopedSettingAttribute()]
    public global::System.Collections.Generic.List<global::LearningProject.Types.Product> Products
    {
        get
        {
            return ((global::System.Collections.Generic.List<global::LearningProject.Types.Product>)(this["Products"]));
        }
        set
        {
            this["Products"] = value;
        }
    }
}

Product.cs

[Serializable]
public class Product
{
    [XmlAttribute("Name")]
    public string Name { get; set; }

    [XmlAttribute("Id")]
    public int Id { get; set; }
}

以下是App.config文件,其中包含一个示例Product

<configuration>
<configSections>
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
      <section name="LearningProject.Settings1" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
      <section name="LearningProject.CustomSettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
    </sectionGroup>
</configSections>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
  <userSettings>
        <LearningProject.CustomSettings>
          <setting name="Products" serializeAs="Xml">
            <ArrayOfProduct>
              <Product>
                <Name>Product1</Name>
                <Id>ProductID</Id>
              </Product>
            </ArrayOfProduct>
          </setting>
        </LearningProject.CustomSettings>
    </userSettings>
</configuration>

现在,当我尝试获取Products的列表时得到null

List<Product> products = CustomSettings.Default.Products;

这意味着要么我做错了什么(可能是XML属性?)要不就是我漏了一步。还要注意,Settings1.settings(由vs生成)已经存在,我的CustomSettings类只是将方法添加到默认的自动生成的设置文件中。我只是想知道有没有人这么做过。如有任何帮助,我们不胜感激。

推荐答案

在app.config中替换

<setting name="Products" serializeAs="Xml">
  <ArrayOfProduct>
    <Product>
      <Name>Product1</Name>
      <Id>ProductID</Id>
    </Product>
  </ArrayOfProduct>
</setting>

<setting name="Products" serializeAs="Xml">
  <value>
    <ArrayOfProduct>
      <Product Name="Product1" Id="1" />
    </ArrayOfProduct>
  </value>
</setting>

我是如何认识到这一点的

CustomSettings.Default.Products = new List<Product>();
CustomSettings.Default.Products.Add(new Product() { Id = 1, Name = "Product1" });
CustomSettings.Default.Save();

现在本地配置(%appdatalocal%PROJECT_NAME..USER.CONFIG)包含了正确的值

这篇关于正在尝试创建自定义局部设置文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆