3

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

我尝试了以下代码,但在创建 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 未处理

H结果=-2146233079

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

4

1 回答 1

1

恕我直言,您不应该这样做。

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

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

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

如果您确实必须序列化用户控件(并且我强烈建议您不要),您可以尝试使用DataContract 序列化,它具有“选择加入”机制,属性被序列化,而不是“选择退出”机制较旧的序列化。

于 2013-04-09T09:28:16.917 回答