C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了wpf – 使用datacontract进行哈希表序列化时出现问题大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用链接序列化哈希表

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();

            datetiR_924_11845@e dt = datetiR_924_11845@e.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<datetiR_924_11845@e,int> { }


}

what wrong is hapenning ..please Help.

谢谢

解决方法

你得到错误的原因是因为在行中:

serializeToXmlAsFile(typeof(HashtablE),ht);

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

s.WriteObject(w,targetObject);

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

serializeToXmlAsFile(typeof(MyHashtablE),ht);

大佬总结

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

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。