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>
现在,我得到null
当我尝试获得Products
列表:
List<Product> products = CustomSettings.Default.Products;
这意味着无论是我做错了什么(XML属性,也许?)还是我缺少的一个步骤。另外请注意,Settings1.settings
(由VS生成)已经存在,并且我的CustomSettings
类只是将方法添加到默认的自动生成的设置文件。我只是想知道是否有人曾经这样做过。任何帮助表示赞赏。
我还是得到null当我手动将它们添加到'app.config'时,但通过代码添加它似乎工作,但即使如此,我仍然无法在'app.config'中看到它们,这表明它们正在保存在其他地方。任何想法? – PoweredByOrange 2013-06-26 16:23:05
更正了我的答案:忘记了位于%appdatalocal%\ project_name .. \ user.config中的0123.tag.Local配置。完成后将其删除,否则将从中取出设置 – cdmnk 2013-06-27 10:18:14
但是,如何将设置直接放在app.config中?当我在几个月前第一次完成时,所有设置都是在app.config中写入/读取的。 – PoweredByOrange 2013-06-27 16:04:20