我需要编写 WCF 服务,它将.xml文件反序列化到我的自定义 calss 中,然后对该数据执行一些操作。我已经编写了这个应用程序的测试版本,它使用控制台而不是 WCF。这是我的代码的样子:
[Serializable]
public class ErrorMsgElement
{
[XmlElement("Sender")]
public string SenderOfMessage{ get; set; }
[XmlElement()]
public Int64 UserID { get; set; }
[XmlElement()]
public Int64 SerialNumber { get; set; }
[XmlElement("DateTime")]
public DateTime DateAndTimeOfMessage { get; set; }
}
[Serializable]
[XmlRoot("Root")]
public class ErrorMessage
{
[XmlElement("Header")]
public string HeaderOfFile { get; set; }
[XmlElement("ErrorMsg")]
public ErrorMsgElement msgElent { get; set; }
}
和主要代码
ErrorMessage myErrorMsg = new ErrorMessage();
//pathToFile is original path
string path = @pathToFile;
XmlSerializer myXmlSerializer = new XmlSerializer(typeof(ErrorMessage));
using (StreamReader myStrReader = new StreamReader(path))
{
myErrorMsg = (ErrorMessage)myXmlSerializer.Deserialize(myStrReader);
}
//some operations on myErrorMsg such as writing to database
它在控制台应用程序中运行良好。现在我需要在 WCF 服务中编写相同的逻辑。但我不知道我应该使用什么 - [Serializable]、[DataContact]、[MessageContract]或其他?考虑到我的自定义类中也有一些 [XmlArray] 属性。如果我将 [DataContract] 属性添加到我的ErrorMessage类,我是否必须向ErrorMsgElement添加相同的属性,如下所示?
[DataContract]
[Serializable]
public class ErrorMsgElement
{
...
}
[DataContract]
[Serializable]
[XmlRoot("Root")]
public class ErrorMessage
{
...
[DataMember]
[XmlElement("ErrorMsg")]
public ErrorMsgElement msgElent { get; set; }
}
所有答案都非常感谢。提前致谢。