DataContractSerializer не является частью WCF, это часть сериализации во время выполнения, от которой зависит WCF.
В прошлом я использовал DataContractSerializer для десериализации объектов из XML, который я сгенерировал из XML-преобразования. Это может быть ниже того, что вы хотите сделать.
Чтобы выяснить, что требуется XML для сериализатора, мне было проще написать небольшой фрагмент кода, сериализовавший мой объект в строку, чтобы увидеть, как он должен быть структурирован и каковы пространства имен XML.
[TestFixture]
public class TestDataContractSerializerOutput
{
[Test]
public void Should_give_me_some_serialized_xml()
{
Foo foo = new Foo();
foo.Bars.Add(new Bar { Name = "Wibble"});
var dataContractSerializer = new DataContractSerializer(typeof(Foo), new[] { typeof(Bar) } );
using (Stream stream = new MemoryStream())
{
dataContractSerializer.WriteObject(stream, foo);
stream.Position = 0;
using (StreamReader streamReader = new StreamReader(stream))
{
Trace.WriteLine(streamReader.ReadToEnd());
}
}
}
}
[DataContract]
public class Foo
{
public Foo()
{
Bars = new List<IBar>();
}
[DataMember]
public IList<IBar> Bars { get; set; }
}
public interface IBar
{
string Name { get; set; }
}
[DataContract]
public class Bar : IBar
{
public string Name { get; set; }
}
С помощью этой информации вы можете увидеть, как структурировать XML, а также получить схемы XML для дополнительной проверки.