我有一个类型MyParameter我作为参数传递给WCF服务WCF序列化问题
[Serializable]
public class MyParameter : IXmlSerializable
{
public string Name { get; set; }
public string Value { get; set; }
public string Mytype { get; set; }
#region IXmlSerializable Members
public System.Xml.Schema.XmlSchema GetSchema()
{
return null;
}
public void ReadXml(System.Xml.XmlReader reader)
{
XElement e = XElement.Parse(reader.ReadOuterXml());
IEnumerable<XElement> i = e.Elements();
List<XElement> l = new List<XElement>(i);
Name = l[0].Name.ToString();
Value = l[0].Value.ToString();
Mytype = l[0].Attribute("type").Value.ToString();
}
public void WriteXml(System.Xml.XmlWriter writer)
{
writer.WriteStartElement(Name);
writer.WriteAttributeString("xsi:type", Mytype);
writer.WriteValue(Value);
writer.WriteEndElement();
}
#endregion
}
服务合同是这样的:
[ServiceContract]
public interface IOperation
{
[OperationContract]
void Operation(List<Data> list);
}
如果数据定义数据合同
[DataContract]
public class Data
{
public string Name { get; set; }
public List<MyParameter> Parameters{ get; set; }
}
当我运行服务并测试它时 我在readXml MyParameter中遇到了异常 “前缀XSI没有定义” XSI应该定义命名空间“http://w3.org/2001/xmlschema-instance”
我该如何解决这个问题
我很新的这这样一个示例代码将是非常非常非常有帮助 感谢
你为什么不解释一下你想要完成的任务?自定义序列化?或者你只是想发送一个自定义类型的列表? – Nix 2010-08-17 12:50:34