【问题标题】:Problem with serialization of svcutil synthetized classessvcutil 合成类的序列化问题
【发布时间】:2011-01-28 11:45:36
【问题描述】:

我使用 svcutil 生成类来访问 Web 服务。我需要序列化它们。这个类很简单,如下所示

[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="cosemAttributeDescriptor", Namespace="http://www.energiened.nl/Content/Publications/dsmr/P32")]
public partial class cosemAttributeDescriptor : object, System.Runtime.Serialization.IExtensibleDataObject
{

    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;

    private ushort ClassIdField;

    private string InstanceIdField;

    private sbyte AttributeIdField;

    public System.Runtime.Serialization.ExtensionDataObject ExtensionData
    {
        get
        {
            return this.extensionDataField;
        }
        set
        {
            this.extensionDataField = value;
        }
    }

    [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true)]
    public ushort ClassId
    {
        get
        {
            return this.ClassIdField;
        }
        set
        {
            this.ClassIdField = value;
        }
    }

    [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, EmitDefaultValue=false)]
    public string InstanceId
    {
        get
        {
            return this.InstanceIdField;
        }
        set
        {
            this.InstanceIdField = value;
        }
    }

    [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true, Order=2)]
    public sbyte AttributeId
    {
        get
        {
            return this.AttributeIdField;
        }
        set
        {
            this.AttributeIdField = value;
        }
    }
}

现在,问题是我无法序列化该类。下面是序列化代码:

        cosemAttributeDescriptor cAttrD = new cosemAttributeDescriptor();
        cAttrD.ClassId = 3;
        cAttrD.InstanceId = "0100010800FF";
        cAttrD.AttributeId = 0;
        DataContractSerializer dSer = new DataContractSerializer(typeof(cosemAttributeDescriptor));
        StringBuilder sb = new StringBuilder();
        XmlWriter xW = XmlWriter.Create(sb);
        dSer.WriteObject(xW, cAttrD);

当我尝试序列化类时,我得到空字符串。有什么想法吗?

【问题讨论】:

    标签: serialization svcutil.exe


    【解决方案1】:

    我发现了问题。这种方式的序列化根本行不通,但是下面的代码也有同样的效果。

    DataContractSerializer dSer = new DataContractSerializer(typeof(cosemAttributeDescriptor));
    MemoryStream mStr = new MemoryStream(); 
    dSer.WriteObject(mStr, cAttrD); 
    mStr.Position = 0; 
    StreamReader sRead = new StreamReader(mStr); 
    String result = sRead.ReadToEnd();
    

    【讨论】:

      猜你喜欢
      • 2011-11-21
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 2012-01-08
      • 2019-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多