2009-09-05 13 views
6

サードパーティの.NET Libから取得したオブジェクトの一部をXMLファイルにシリアル化しようとしています。 IオブジェクトのGo To Definition、そのオブジェクトのプロパティのいくつかは[XMLIgnore][XMLIgnore]属性を無視するには

としてマークされている

は、いくつかのプロパティは、その属性を持っているという事実を無視し、それがすべてをシリアライズすることに私System.Xml.Serialization.XmlSerializerを指示する方法はありますオブジェクト内に

私はおそらく、ソースを取得し、XMLIgnore属性なしでそれを再コンパイルが、XmlSerializerは、事前


EDITに

XmlSerializer xmls = new XmlSerializer(
    typeof(MyObject), 
    Settings.DoNotApplyXMLAttributeRules 
); 

おかげのようないくつかの素晴らしいオーバーライド・プロパティを持っていたならば、それは素晴らしいことだ可能性

XmlAttributeOverridesを試してみましたが、h多くの喜びを助けます。 はここ

XmlWriter xtw = XmlWriter.Create(Server.MapPath("~/App_Data/Data.xml")); 

XmlAttributes photoAttributes = new XmlAttributes(); 
photoAttributes.XmlIgnore = false; 

XmlAttributeOverrides photoOverrides = new XmlAttributeOverrides(); 
photoOverrides.Add(typeof(Photo), "LargeUrl", photoAttributes); 

XmlSerializer xmlphoto = new XmlSerializer(typeof(Photo), photoOverrides); 

答えて

12

...まだ動作しません...使用オブジェクト定義(それが写真のためにFlickrAPIからだ)

[Serializable] 
public class Photo 
{ 
    //Some code omitted 
    [XmlIgnore] 
    public string LargeUrl { get; } 

} 

そしてHERESに私が書いたシリアライザコードです:

XmlAttributeOverrides 

http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlattributes.xmlignore.aspx

編集:(質問EDIT後)

プロパティはパブリックで、ゲッターとセッターをシリアル化する必要があります。

http://msdn.microsoft.com/en-us/library/182eeyhh%28VS.85%29.aspx

+0

は、しかし何の喜びを試していない(()最初の注を参照してください)。他の提案は高く評価されます。私が何かばかげている場合に備えて、元の質問にコードを追加しました。 –

+1

LargeUrlにはセッターがないため、XmlIgnore属性がなくてもシリアル化されません。 – manji

+1

ああ。私は値を格納し、それを別々にシリアライズするためのプロキシクラスを作成することで、その周りにいる。 –

関連する問題