2014-03-25 45 views
0

我有一個具有System.Diagnostics.Process類型的字段的類。我想序列化我的對象,但似乎不可能。是否有可能 1.按其屬性進程序列化成員進程.StartInfo.FileName 2當我反序列化時,我想嘗試使用FileName重構進程,使用它的構造函數。如何序列化.net對象的成員

給一些示例代碼

public class Job{ 
    /*[something like SerializeMember("StartInfo.FileName")]*/ 
    /*[something like DeserializeMember(new Process(value))]*/ 
    System.Diagnostics.Process process; 
    string name; 
} 

如果有更好的方式來做到這一點,隨意添加。

+0

你打算使用哪個序列化程序? – toATwork

回答

2

我想你可以通過創建你序列化的屬性做到這一點,然後在設定的財產嘗試推出進程。這是它的半僞代碼...

public class Job{ 
    [XmlIgnore] 
    System.Diagnostics.Process process; 

    public ProcessFileName 
    { 
     get {return process.StartInfo.FileName;} 
     set { process = Process.Start(value); } 
    } 
} 
+0

如果BinaryFormatter用於序列化,您還應該將NonSerialized屬性應用於成員 – toATwork

1

也許添加一個屬性會有所幫助。

public SomeSerializableClass SerializedProcess 
{ 
    get { 
    ConvertProcessToSomeSerializableClass(process); 
    } 
    set { 
     process = ConvertSomeSerialzableClassToProcess(value); 
    } 
} 

然後在process添加屬性[XmlIgnore]

+0

+1,但答案相同。 –

+0

我實際上是秒前!不用擔心:) – MikeH