みなさん、良い一日を、
私は独立したゲーム開発者であり、過去には主にXNAを使用し、他の極端な場合は商用ツールセットを使用していました。ただし、XNAの到達範囲はかなり限られており、複数のプラットフォームを対象とするクロスプラットフォームの抽象化レイヤーを構築しています。
簡単に言うと、[Serializable]よりも広くアクセスできるxmlシリアル化が必要であり、データコントラクトが指摘されています。私は多くの調査を行ってきましたが、継承とオーバーライドに関連するシステムの基本のいくつかについての良い情報を見つけることができません。
私の質問の核心は...
[DataContract]
public class Node
{
private string name;
public string Name { get { return name; } set { name = value; } }
public virtual float Rotation { get { return 0f; } set { } }
}
[DataContract]
public class FancyNode : Node
{
private float rotation;
public override float Rotation { get { return rotation; } set { rotation = value; } }
}
'FancyNode'をシリアル化すると、'Rotation'は適切にシリアル化され、'Name'はシリアル化されますか?
フォローアップの質問: 先に質問するつもりでしたが、当時は思い出せませんでした。シリアライザーハンドラーは[IgnoreDataMember]プロパティをどのようにオーバーライドしますか?例えば...
[DataContract]
public class Simple
{
[IgnoreDataMember]
public virtual string Value { get { return ""; } set { } }
}
[DataContract]
public class Complex : Simple
{
private string value;
public override string Value { get { return value; } set { this.value = value; } }
}
「Complex」の「Value」はシリアル化されますか?[DataMember]タグが使用されていない場合、すべてのプロパティがシリアル化されることを示唆する回答もあります。もしそうなら、基本クラスの[IgnoreDataMember]属性は何か関係がありますか?