
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进行哈希表序列化时出现问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)