[英]Deserializing an xml file into an object
我正在創建的Windows服務中工作。 代碼在我的開發箱上運行良好,但是當我將代碼部署到服務器時,它找不到要反序列化的xml文件。 xml文件在C:\\ ProgramData \\ AppName \\ Filequeue中創建
在對象中,我創建了一個輔助方法:
public T Deserialize<T>(string input) where T : class
{
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(typeof(T));
using (var reader = XmlReader.Create(input))
{
return (T)ser.Deserialize(reader);
}
}
然后,我使用模擬對象創建一個對象並嘗試讀取該文件:
using (var impersonation = new ImpersonatedUser(AdminName, Domain, ADPass))
{
oMailer = (MailQueue) oMailer.Deserialize<MailQueue>(szFileName);
}
嘗試將文件加載到Deserialize()對象中的對象時,出現“文件名未找到”錯誤。 我猜測模擬沒有流入我嘗試加載的對象中。
如果我嘗試以模擬方式加載文本閱讀器,則可以看到該文件。 因此,我知道該文件存在並且可以被程序看到。
有人知道發生了什么嗎?
我將文件閱讀器代碼移至包含模擬的方法下。 然后創建一個站立對象:
public class Serializer
{
public T Deserialize<T>(string input) where T : class
{
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(typeof(T));
using (StringReader sr = new StringReader(input))
{
return (T)ser.Deserialize(sr);
}
}
public string Serialize<T>(T ObjectToSerialize)
{
XmlSerializer xmlSerializer = new XmlSerializer(ObjectToSerialize.GetType());
using (StringWriter textWriter = new StringWriter())
{
xmlSerializer.Serialize(textWriter, ObjectToSerialize);
return textWriter.ToString();
}
}
}
然后,我能夠加載XML,然后通過以下方式加載和反序列化它:
using (impersonation...)
{
var reader = File.ReadAllText(szFileName);
oMailer = ser.Deserialize<MailQueue>(reader);
}
我仍然對為什么模擬似乎不繼承到模擬中創建的對象感到困惑? 但是我現在沒有時間處理這個問題...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.