C# 哪些必须与XmlSerializer和WCF-DataContract或MessageContract一起使用?

C# 哪些必须与XmlSerializer和WCF-DataContract或MessageContract一起使用?,c#,wcf,xml-serialization,C#,Wcf,Xml Serialization,我需要编写WCF服务,它将把.xml文件反序列化到我的自定义CALS中,然后对该数据执行一些操作。我已经编写了这个应用程序的测试版本,它使用控制台而不是WCF。下面是我的代码的样子: [Serializable] public class ErrorMsgElement { [XmlElement("Sender")] public string SenderOfMessage{ get; set; } [XmlElement()] public Int64 U

我需要编写WCF服务,它将把.xml文件反序列化到我的自定义CALS中,然后对该数据执行一些操作。我已经编写了这个应用程序的测试版本,它使用控制台而不是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; }
}
和主代码

它在控制台应用程序中运行良好。现在我需要在WCF服务中编写相同的逻辑。但我不知道应该使用什么-[Serializable]、[DataContact]、[MessageContract]或其他什么?。考虑到在我的自定义课程中,我也有一些[XLARLAR] AltBuTes。如果我将[DataContract]atribute添加到我的ErrorMessage类中,我是否必须向ErrorMsgElement添加如下相同的属性

[DataContract]
[Serializable]
public class ErrorMsgElement
{
    ...
}

[DataContract]
[Serializable]
[XmlRoot("Root")]
public class ErrorMessage
{
    ...

    [DataMember]
    [XmlElement("ErrorMsg")]
    public ErrorMsgElement msgElent { get; set; }
}

所有答案都非常感谢。提前感谢。

在wcf
[DataContact]
DataContractSerializer
中,建议您执行以下操作。但您也可以使用
XmlSerializer
,这实际上只是您的选择(使用第一个或第二个选项不会影响应用程序的性能)

编辑:

当您向类添加
DataContract
属性时,您不必再添加
Serializable
属性,相同的类
DataContract
等于
Serializable

请检查此项以获得有关的答案

[DataContract]
[Serializable]
public class ErrorMsgElement
{
    ...
}

[DataContract]
[Serializable]
[XmlRoot("Root")]
public class ErrorMessage
{
    ...

    [DataMember]
    [XmlElement("ErrorMsg")]
    public ErrorMsgElement msgElent { get; set; }
}