将哈希表添加到设置中

时间:2013-07-27 17:10:14

标签: c# winforms settings hashtable app-config

我有一个让我发疯的问题。我想在设置中添加哈希表(并添加了2个哈希表),但是当我尝试使用它时,它抛出异常(对象引用未设置为对象的实例。)。然后我看了app.config看起来像这样:

<?xml version="1.0" encoding="utf-8" ?>
   <configuration>
     <configSections>
     </configSections>

   </configuration>

然后我在app.config文件中添加了两个哈希表,现在我的配置文件如下所示:

<?xml version="1.0" encoding="utf-8" ?>

    

    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
        <section name="APPNAME.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
    </sectionGroup>
</configSections>

<userSettings>
    <APPNAME.Properties.Settings>
      <setting name="UserInfo" serializeAs="System.Collections.Hashtable">
        <value />
      </setting>
      <setting name="UserText" serializeAs="System.Collections.Hashtable">
        <value />
      </setting>
    </APPNAME.Properties.Settings>
</userSettings>

当我尝试使用哈希表时,它抛出以下异常: 无法解析属性'serializeAs'的值。

我用谷歌搜索但不成功,我在msdn上搜索也没找到。

1 个答案:

答案 0 :(得分:1)

Hashtable不支持序列化为XML。您在Settings.Settings中只有2个选项可用。 XML或字符串。将序列化选项更改为

serializeAs="Binary"

同样在Settings类中,您必须将序列化选项属性指定为

[SettingsSerializeAs(SettingsSerializeAs.Binary)]