我一直在谷歌搜索过去几个小时并尝试不同的东西,但似乎不能在这个底部....
当我运行此代码时,内存使用量不断增长.
while (true)
{
try
{
foreach (string sym in stringlist)
{
StreamReader r = new StreamReader(@"C:\Program Files\" + sym + ".xml");
XmlSerializer xml = new XmlSerializer(typeof(XMLObj), new XmlRootAttribute("rootNode"));
XMLObj obj = (XMLObj)xml.Deserialize(r);
obj.Dispose();
r.Dispose();
r.Close();
}
}
catch(Exception ex)
{
Console.WriteLine(ex.ToString());
}
Thread.Sleep(1000);
Console.Clear();
}
Run Code Online (Sandbox Code Playgroud)
XMLObj是一个自定义对象
[Serializable()]
public class XMLObj: IDisposable
{
[XmlElement("block")]
public List<XMLnode> nodes{ get; set; }
public XMLObj() { }
public void Dispose()
{
nodes.ForEach(n => n.Dispose());
nodes= null;
GC.SuppressFinalize(this);
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试添加GC.Collect(); 但这似乎没有做任何事情.
我正在尝试序列化具有多个属性的对象,但我不想在序列化中包含所有属性.另外,我想更改日期格式.
当然我可以添加[XmlIgnore],但我不允许更改原始类.
我能想到的唯一选择是创建一个新类并复制两个类之间的所有内容.但这将是丑陋的,需要大量的手动代码.
是否有可能创建一个子类,因为原始不是抽象的?
我的问题是:
如何在不更改原始类的情况下排除某些属性?
如何自定义输出XML的日期格式?
要求:
尽可能强大的打字
序列化的XML应该是可反序列化的
提前致谢.