Контракт данных не помечен как сериализуемый при создании прокси WCF - PullRequest
0 голосов
/ 20 января 2020

Я пометил свой контракт данных как сериализуемый, ниже я прилагаю свой пример кода:

Imports System
Imports System.Runtime.Serialization
Imports System.Xml
Imports System.Xml.Serialization

<DataContract()>
<Serializable()>
Public Class USR_USER_CONTRACT
<DataMember()>
Public Property USR_USERID() As Global.System.String
<DataMember()>
Public Property USR_LOGINID() As Global.System.String
End Class

После создания прокси-класса WCF мой контракт данных не помечен как сериализуемый, как показано ниже:

<System.Diagnostics.DebuggerStepThroughAttribute(),
System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0"),
System.Runtime.Serialization.DataContractAttribute(Name:="USR_USER_CONTRACT", [Namespace]:="http://schemas.datacontract.org/2004/07/Ebix.Evolution.EntityContract")>
Partial Public Class USR_USER_CONTRACT
Inherits Object
Implements System.Runtime.Serialization.IExtensibleDataObject

Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject

Private CLM_BUDGETTIMEField As System.Nullable(Of Short)

Private PropertyUSR_DEFAULTASSFILESField As String

Пожалуйста, помогите.

Спасибо

1 Ответ

0 голосов
/ 21 января 2020

В WCF класс по умолчанию можно сериализовать как DataContractSerializer. Следовательно, нет необходимости украшать класс атрибутом Serializable. Как правило, существует два способа сериализации класса в WCF. Один из них - DataContractSerializer, для которого требуется класс данных, отмеченный DataContract или без каких-либо украшений. Другой - сериализатор XML, он требует, чтобы мы добавили XmlSerializerFormatAttribute к Operation Contract или ServiceContract, а затем мы могли бы использовать XMLAttribute/XMlElementAttribute для управления сериализацией.

[ServiceContract,XmlSerializerFormat]
public interface IService
{
    [OperationContract]
    string Test(Product p);
}
public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
}

Пожалуйста, обратитесь к официальной документации.
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/using-the-xmlserializer-class
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/using-data-contracts
Не стесняйтесь, дайте мне знать, если я могу чем-то помочь.

...