私はこのオブジェクト構造を持っています:
[DataContract]
[KnownType(typeof(ChildClassA))]
[KnownType(typeof(ChildClassB))]
public class MainClass
{
[DataMember]
public string PropA { get; set; }
[DataMember]
public IList<IMyInterface> GenericInterfaceList { get; set; }
//....
}
public interface IMyInterface
{
int Id { get; set; }
//....
}
[DataContract]
public abstract class BaseClass : IMyInterface
{
[DataMember]
public int Id { get; set; }
//....
}
[DataContract]
public class ChildClassA : BaseClass
{
//....
}
[DataContract]
public class ChildClassB : BaseClass
{
//.....
}
インターフェイスの一般的なリストDataContractSerializer
なしで Xml を発行する必要があります。a:anyType i:type=
<MainClass xmlns="MYNAMESPACE" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<PropA> dfgdsfg gsd</PropA>
<GenericInterfaceList xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<ChildClassA>
<Id>1</Id>
</ChildClassA>
<ChildClassB>
<Id>2</Id>
</ChildClassB>
</GenericInterfaceList>
</MainClass>
それ以外の:
<MainClass xmlns="MYNAMESPACE" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<PropA> dfgdsfg gsd</PropA>
<GenericInterfaceList xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<a:anyType i:type="ChildClassA">
<Id>1</Id>
</a:anyType>
<a:anyType i:type="ChildClassB">
<Id>2</Id>
</a:anyType>
</GenericInterfaceList>
</MainClass>
カスタムで試しましたDataContractResolver
が、適切なツールではありません。その Xml を縮小する方法が見つかりません。