2017-02-22 12 views
0

私は基本クラスにメソッドを追加するだけの派生クラスを持っていますが、基本クラスとして直列化したいのですが、これはゲーム用のもので、基本クラスを直接変更することはできませんXmlIncludeをベースに追加します。基本クラスにアクセスできない派生クラスのXmlInclude?

namespace CustomNPC 
{ 
public class CustomNPCInteract : NPC 
{ 
public CustomNPCInteract() 
    :base() 
{ 
    this.initializeNPC(); 
} 

public CustomNPCInteract(AnimatedSprite sprite, Vector2 position, string defaultMap, int facingDir, string name, bool dateable, Dictionary<int, int[]> schedule, Texture2D portrait) 
    : base(sprite, position, defaultMap, facingDir, name, dateable, schedule, portrait) 
{ 
    this.initializeNPC(); 
} 

public CustomNPCInteract(AnimatedSprite sprite, Vector2 position, int facingDir, string name, StardewValley.LocalizedContentManager manager = null) 
    :base(sprite, position, facingDir, name, manager) 
{ 
    this.initializeNPC(); 
} 

private void initializeNPC() 
{ 
    this.age = 2; //child 
    this.manners = 2; //rude 
    this.socialAnxiety = 1; //shy 
    this.optimism = 1; //negative 
    this.gender = 1; //female 
    this.datable = false; //not-datable 
    this.homeRegion = 0; //Other 
    this.birthday_Season = "fall"; //fall 8 
    this.birthday_Day = 8; 
    } 
} 
} 

名前空間とクラスの設定方法です。 CustomNPCInteractはNPCを継承しています。他のNPCと同様にシリアル化しますが、その特定のクラスを変更するアクセス権はありません。これは、NPCにシリアル化されたXMLのルートの名前を変更します

 XmlSerializer serializer = new XmlSerializer(typeof(CustomNPCInteract),new XmlRootAttribute("NPC")); 

すべてのヘルプは大幅に

答えて

0

これは、あなたがそれを行う方法であると認識されるであろう

は...そう、あなたは標準の直列化復元を使用することができます

+0

コメントありがとうございます。私がmodを書いている実際のゲームは、既にデータを保存するために使用するSaveGame.serializerの下に独自のシリアライザインスタンスを持っています。既存のインスタンスを上書きするのではなく、追加する場所がありますか? – Kriogenic

+0

いいえ、それを上書きする必要があります。どのXML文書にもルートノードが1つしかないため、XMLにデータを追加することはできません。デフォルトのシリアライザを自分のものに置き換えるのは簡単なことですが、それ以上のことを知らずに私はそれ以上の提案はできません。 – AQuirky

関連する問題