自定义类型的序列化问题

时间:2014-06-27 06:05:40

标签: c# serialization xml-serialization

我有以下课程:

 [Serializable]
public class TradeBotSettings 
{
    public ExchangePlatform Exchange
    {
        get;
        set;
    }

}
 [Serializable]
    public enum ExchangePlatform
    {

        [XmlEnum("BTC_E")]
        BTC_E,
        [XmlEnum("BitStamp")]
        BitStamp,
        [XmlEnum("CampBX")]
        CampBX,
        [XmlEnum("Cryptsy")]
        Cryptsy,
        [XmlEnum("BTCChina")]
        BTCChina,
    }

当我尝试序列化时出现错误

private void Button2_Click(object sender, EventArgs e)
        {
             TradeBotSettings tbSettings = new TradeBotSettings();
        tbSettings.Exchange = ExchangePlatform.BTC_E;
        StreamWriter sw = new StreamWriter(@"D:\Temp\Trader\Trader\Trader\bin\x86\Debug\configs\bots.xml", false);
        xmlSerializerTradebot = new XmlSerializer(tbSettings.GetType());
        xmlSerializerSettings.Serialize(sw, tbSettings);
        sw.Close();
        }

错误是:System.Xml.dll中出现未处理的“System.InvalidOperationException”类型异常

其他信息:生成XML文档时出错。

这看起来像是一个通用错误,任何人都有关于此

的线索

提前致谢

1 个答案:

答案 0 :(得分:2)

您提交的代码不会编译,xmlSerializerSettings未知。这应该是“xmlSerializerTradebot.Serialize(...”而不是,这很好。也许这是你的问题?

顺便说一句:您应该在创建StreamWriter实例时使用“using”子句,以防止在序列化异常的情况下不立即关闭文件。您也不需要使用XMLEnum属性,除非您想要更改枚举的默认序列化行为...

BTW2:是的,我知道,这不是问题的明确答案,我应该评论。我愿意,如果我已经......; - )