проблема с сериализацией wcf

У меня есть тип MyParameter, который я передаю в качестве параметра службе 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"

Как решить проблему

Я очень новичок в этом, поэтому пример кода будет очень очень полезен, спасибо


person asdas    schedule 17.08.2010    source источник
comment
Почему бы вам не объяснить, чего вы хотите достичь? Пользовательская сериализация? Или вы просто пытаетесь отправить список пользовательского типа?   -  person Nix    schedule 17.08.2010


Ответы (1)


Добавлять:

   writer.WriteAttributeString("xmlns","xsi", null,@"http://w3.org/2001/xmlschema-instance");
person Nix    schedule 17.08.2010
comment
спасибо за ответ, первый метод работает, но мне он не подходит, как мне использовать второй метод? я не понимаю что менять? - person asdas; 17.08.2010
comment
Почему первый не подходит? - person Nix; 17.08.2010
comment
это вызывает проблему где-то в коде (не связанную с wcf) - person asdas; 17.08.2010
comment
мне трудно объяснить эту проблему... Я попытался установить схему с xsi для MyParameter, и это не помогло.. - person asdas; 17.08.2010
comment
Может быть, вам следует объяснить свою конечную цель. Что вы пытаетесь решить этим примером? Пользовательская сериализация? Потому что есть лучшие способы разметки DataContracts - person Nix; 17.08.2010