WSE3을 사용하여 웹 서비스를 호출하는 프로젝트에서 작업하고 있습니다. 원래 VS2005를 사용하여 생성 된 유형은 시간이 지남에 따라 수정되었습니다. 이제 SOAP 메시지에서 유형의 이름을 변경해야합니다. XmlTypeAttribute를 사용하여이 작업을 수행해야하지만 그 이름은 형식 이름에 영향을주지 않습니다. 실험으로, 그 클래스의 속성에 XmlElementAttribute를 사용했는데, 그 속성에 대해 생성 된 요소의 이름이 변경되었습니다. 생성 된 객체는 부분 클래스를 사용하여 확장되었습니다.XmlTypeAttribute가 형식 이름을 변경하지 않습니다.
SOAP 유형은 "주소"로 유선을 통해 전달됩니다. 나는 왜 XmlTypeAttribute가 그것에 영향을 미치지 않는지, 왜 그것이 소문자를 가로 질러 오는지 알지 못한다.
내가 잘못하고있는 것, 또는 목표를 달성하는 더 좋은 방법에 대한 생각?
References.cs :
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.1434")]
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(TypeName = "MyAddress", Namespace = "http://sample.com/transaction")]
// ^-- Soap typenamed "address", not "MyAddress"
public partial class Address
{
private string address1Field;
private string address2Field;
private string[] jurisdictionsField;
private System.DateTime resolvedDateField;
private bool resolvedDateFieldSpecified;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("MyAddress1", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
// ^--- SOAP element named "MyAddress1" as expected
public virtual string Address1
{
get {
return this.address1Field;
}
set {
this.address1Field = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("address2", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public virtual string Address2
{
get {
return this.address2Field;
}
set {
this.address2Field = value;
}
}
}
Address.cs :
public partial class Address
{
private int id;
public virtual int Id
{
get { return id; }
set { id = value; }
}
}
더 복잡한 방법은 MSDN 설명서의 [XmlAttributes.XmlType Property] (https://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlattributes.xmltype (영문) v = vs.100) .asp). - "XmlTypeAttribute를 만들고 XmlType 속성을 설정 한 다음 XmlAttributeOverrides 개체를 만들면 XML 요소 이름을 변경할 수 있습니다." –