wpf – 使用datacontract进行哈希表序列化时出现问题

wpf – 使用datacontract进行哈希表序列化时出现问题,第1张

概述我正在尝试使用链接序列化哈希表 XML serialization of hash table(C#3.0) 但我收到的错误是 不要求输入数据合同名称为“AllMyHashtable:http://schemas.datacontract.org/2004/07/WpfApplication3”的“WpfApplication3.MyHashtable”.将任何静态未知的类型添加到已知类型列表中 @H_301_1@ 我正在尝试使用链接序列化哈希表

XML serialization of hash table(C#3.0)

但我收到的错误是

不要求输入数据合同名称为“AllMyHashtable:http://schemas.datacontract.org/2004/07/WpfApplication3”的“WpfApplication3.MyHashtable”.将任何静态未知的类型添加到已知类型列表中 – 例如,通过使用KNownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表中.

我的计划如下

namespace WpfApplication3{    /// <summary>    /// Interaction logic for Window1.xaml    /// </summary>    public partial class Window1 : Window    {        public Window1()        {            InitializeComponent();        }        private voID button1_Click(object sender,RoutedEventArgs e)        {            MyHashtable ht = new MyHashtable();            DateTime dt = DateTime.Now;            for (int i = 0; i < 10; i++)                ht.Add(dt.AddDays(i),i);            SerializetoXmlAsfile(typeof(Hashtable),ht);         }        private voID SerializetoXmlAsfile(Type targettype,Object targetobject)        {            try            {                string filename = @"C:\output.xml";                DataContractSerializer s = new DataContractSerializer(targettype);                XmlWriterSettings settings = new XmlWriterSettings();                settings.Indent = true;                settings.IndentChars = ("    ");                using (XmlWriter w = XmlWriter.Create(filename,settings))                {                    s.WriteObject(w,targetobject);                    w.Flush();                }            }            catch (Exception ex) { throw ex; }        }    }    [CollectionDataContract(name = "AllMyHashtable",Itemname = "MyEntry",Keyname = "MyDate",Valuename = "MyValue")]     public class MyHashtable : Dictionary<DateTime,int> { }}What wrong is hapenning ..please help.

谢谢

解决方法 你得到错误的原因是因为在行中:

SerializetoXmlAsfile(typeof(Hashtable),ht);

在你的button1_Click方法中,你传递的是Hashtable类型. DataContractSerializer构造函数初始化自身以序列化您指定的Type对象,在本例中为Hashtable.因此,当您调用时,它传递一个MyHashtable类型的对象

s.WriteObject(w,targetobject);

它不知道如何处理它.您需要做的就是将此行更改为:

SerializetoXmlAsfile(typeof(MyHashtable),ht);
总结

以上是内存溢出为你收集整理的wpf – 使用datacontract进行哈希表序列化时出现问题全部内容,希望文章能够帮你解决wpf – 使用datacontract进行哈希表序列化时出现问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1225238.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存