0
我真的需要你的幫助。遞歸序列化方法
其實,我從一個路徑讀取了一些文件,並對它們進行了序列化。到現在爲止,沒什麼特別的 NOW:我喜歡在我的例子主要文件,並子文件(新內容):
disktest.xml // Main file
disktest.1.xml //Sub file
disktest.2.xml //Sub file
MYFILE類看起來是這樣的:
public class myFile
{
// Some XmlArguments like name, blablabla (xml elements)
[XmlAttribute]
public string Name {get; set;}
[XmlAttribute]
public string Version {get; set;}
[XmlAttribute]
public string Description{get; set;}
...
// And a list of my subfiles
[XmlIgnore]
public List<myFile> SubFiles {get; set;}
}
public myFile()
{
name = "";
...
SubFiles = new List<myFile>();
}
喜歡我在我的道路讓所有的文件我用的LoadFile()serilize他們
// Read all Files and deserialize them
List<string> allfiles = Directory.GetFiles("path", "pattern").ToList();
List<myFile> files= allfiles.Select(f => myFile.LoadFile(f)).ToList();
public static myFile LoadFile(string fileName)
{
myFile ret = new myFile();
try
{
using (StreamReader sr = new StreamReader(fileName))
{
XmlSerializer ser = new XmlSerializer(typeof(myFile));
ret = (myFile)ser.Deserialize(sr);
}
}
catch (Exception ex)
{
ret.IsError=true;
ret.Error=ex.Message;
}
return ret;
}
的想法是,當我讀到一個子文件,它有它的主文件中被序列化,這與遞歸性做出..問題是,I D ont找到「Base Case」來停止遞歸和我變得瘋狂......
任何幫助對我來說都會很棒...... 在此先感謝!
嗨LB2感謝您的快速答案,每個文件具有不同的屬性喜歡,以及更多的東西,如果它的主要或子文件發生變化..我需要序列化每個文件的內容,如果文件是一個子文件,它必須在同一個對象中返回... –
minoyo
@minoyo不幸的是,我不能按照你的評論,如果你不想要子文件的屬性序列化,那麼將它們標記爲忽略。或者,如果你不想要包括子文件屬性,但只是文件內容,你可以保持忽略原樣,並在你的主文件中創建一個返回子文件內容的屬性,並對其進行序列化。在prope的setter上rty,當內容被反序列化器分配給它時,寫它以便它從文本重新創建子文件類和它的所有屬性。 – LB2