XML序列化 - 序列化用户控件中的属性

时间:2013-04-09 09:22:14

标签: c# wpf xml serialization user-controls

如何在用户控件中序列化属性?

我尝试了以下代码,但是在创建XmlSerializer对象时我得到了InvalidOperationExceptio

MyUserControl userControl = new MyUserControl();
XmlSerializer serializer = new XmlSerializer(typeof(MyUserControl));
Stream stream = new MemoryStream();
TextWriter writer = new StreamWriter(stream);
serializer.Serialize(writer, userControl);   

例外:

System.InvalidOperationException未处理

的HResult = -2146233079

消息=反映出类型为“Demo.MyUserControl”的错误。

1 个答案:

答案 0 :(得分:1)

你不应该像这样恕我直言。

您应该编写一个单独的“数据传输对象(DTO)”样式类来保存要序列化的数据,然后使用 。 (当然,您需要编写Transform方法来回转换数据。)

否则,您会将数据存储格式与用户控件紧密耦合。

如果您使用单独的类进行序列化,则会使其更易于管理和灵活,尤其是在您将来需要添加新属性时。

如果您确实必须序列化用户控件(我强烈建议您),您可以尝试使用“{3}} -in“为其序列化属性的机制,而不是旧序列化的”选择退出“机制。