クラスB
をitaベースクラスA
のインスタンスとしてシリアル化しようとしています。 DataContractSerializer
は私にそれを許可しません。次のようにシリアライズに失敗継承型のDataContractシリアル化をベース型に
例は次のとおりです。
class Program
{
[DataContract]
public class A
{
public int Id { get; set; }
}
[DataContract]
public class B : A
{
}
static void Main(string[] args)
{
A instance = new B { Id = 42 };
var dataContractSerializer = new DataContractSerializer(typeof(A));
var xmlOutput = new StringBuilder();
using (var writer = XmlWriter.Create(xmlOutput))
{
dataContractSerializer.WriteObject(writer, instance);
}
}
}
私は問題を簡単に追加KnownTypes
属性によって解決されることを知っています。 しかし、クラスB
をプロジェクトから非表示にしたい(参照を追加しない)。
私が望むことを達成することは、すべて可能ですか?私はXmlSerializer
を試しましたが、同じ問題が発生しました(XMLに完全なインスタンスの型名が追加されました)。
を与える
は、それがXMLである必要がありますか?または、それだけでは動作しなければなりませんか? –
それはちょうどうまくいくことができます。最低限の手間はかかります。 – R4cOON