.xmlファイルをカスタム calss に逆シリアル化し、そのデータに対していくつかの操作を行うWCF サービスを作成する必要があります。コンソールを使用するが 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; }
}
すべての回答は大歓迎です。前もって感謝します。