XMLで通信する2つの(異なる)C#システムがあります。XML形式に同意しました。
次にやりたいことは、クラスをシリアル化することです。
public class Parent
{
public IChild Child { get; set; }
public string Name { get; set; }
}
public interface IChild
{
string Name { get; set; }
}
public class Girl:IChild
{
public string Name { get; set; }
public string FavDoll { get; set; }
}
public class Boy : IChild
{
public string Name { get; set; }
public string FavCar { get; set; }
}
IXmlSerializerを使用した場合の結果:
IXmlSerializableを使用すると、例外が発生します。インターフェイスIChild(wellwaddayaknow)にコンストラクターがありません。
わかりました、それを修正しました(@Giedriusに感謝します)
そして@RobertHのおかげでnsが少なくなります
<Parent>
<Child>
<Boy>
<Name>Bill</Name>
<FavCar>Chevvy</FavCar>
</Boy>
</Child>
</Parent>
DataContractを使用すると、xmlnsに名前空間への参照が含まれるようになります。これは他のシステムにはありません。したがって、逆シリアル化すると例外が発生し、参照がありません。
<Parent xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Child xmlns:d2p1="TestConsole, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" i:type="d2p1:TestConsole.Boy">
<FavCar xmlns="http://schemas.datacontract.org/2004/07/TestConsole">Chevvy</FavCar>
<Name xmlns="http://schemas.datacontract.org/2004/07/TestConsole">Bill</Name>
</Child>
</Parent>
XDocumentを使用して多くのlocを生成する唯一のオプションはありますか?