我创建了一个客户信息表单,并将文本框绑定(bind)到表单类中的属性。这个简单的表单有 10 个文本框,它们绑定(bind)到表单中的属性
- 客户名称
- PhonePrimary.phoneNumber
- PhonePrimary.phoneType
- PhonePrimary.TextMessageOK
- PhoneDaytime.phoneNumber
- PhoneDaytime.phoneType
- PhoneDaytime.TextMessageOK
- PhoneEvening.phoneNumber
- PhoneEvening.phoneType
- PhoneEvening.TextMessageOK
填写这些值后,我想创建一个 XML 文件来保存这些值,以便以后可以检索它们。
using System;
using System.Windows.Forms;
using System.Xml.Serialization;
using System.IO;
namespace SimpleCustomerInfo
{
public partial class CustomerInfoForm : Form
{
CustomerInfo ci;
public CustomerInfoForm()
{
InitializeComponent();
ci = new CustomerInfo();
}
private void btnSave_Click(object sender, EventArgs e)
{
XmlSerializer serializer = new XmlSerializer(typeof(CustomerInfoForm));
TextWriter textWriter = new StreamWriter(@"C:\testme.xml");
serializer.Serialize(textWriter, ci);
textWriter.Close();
}
public partial class CustomerInfo
{
public string CustomerName { get; set; }
public PhoneInfo PhonePrimary { get; set; }
public PhoneInfo PhoneDays { get; set; }
public PhoneInfo PhoneEvening { get; set; }
}
public class PhoneInfo
{
public string number { get; set; }
public string type { get; set; }
public bool textOk { get; set; }
}
}
}
当填写表格并按下保存按钮时,会生成错误。最内部的异常错误是: {“无法序列化 System.ComponentModel.ISite 类型的成员 System.ComponentModel.Component.Site,因为它是一个接口(interface)。”} 数据:{System.Collections.ListDictionaryInternal}
我希望得到有助于解决此错误的建议,或者关于保存和检索输入数据的不同方法的建议。
最佳答案
您保存了错误的类。尝试:
XmlSerializer serializer = new XmlSerializer(typeof(CustomerInfo));
关于c# - 将 C# 表单序列化为 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6381265/