1
나는 웹 서비스에 액세스하기위한 클래스를 생성하기 위해 svcutil을 사용했습니다. 나는 그것들을 직렬화 할 필요가있다. 클래스는 매우 간단합니다. 여기 보이는 모양입니다.svcutil synthetized 클래스의 serialization 문제
[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);
클래스를 직렬화하려고하면 빈 문자열이 생깁니다. 이견있는 사람?
답변 해주십시오. – capdragon