2014-09-01 4 views
1

저는 Json을 사용하여 서버와 통신하는 C# 응용 프로그램을 보유하고 있습니다.xsd 또는 xsd2code를 사용하여 지정된 접미어로 필드 및 속성 생성을 무시하는 방법

서버 팀이 xsd2code를 사용하여 C# 클래스를 생성하는 데 사용한 xsd를 제공했습니다.

xsd의 각 필드에 대해 xsd2code는 생성 된 C# 클래스에 2 개의 필드를 만듭니다. 하나는 xsd에있는 것과 같은 이름이고 다른 하나는 "Specified"라는 접미사가 붙은 이름입니다. 예를 들어

: 여기 내 XSD 여기

<xsd:element name="depth" type="xsd:int" minOccurs="0"/> 

가 발생 해당 필드를의에서 XML입니다.

private int depthField; 

private bool depthFieldSpecified; 

public int depth { 
     get { 
      return this.depthField; 
     } 
     set { 
      this.depthField = value; 
     } 
    } 

    [System.Xml.Serialization.XmlIgnoreAttribute()] 
    public bool depthSpecified { 
     get { 
      return this.depthFieldSpecified; 
     } 
     set { 
      this.depthFieldSpecified = value; 
     } 
    } 

"지정"접미사 분야를 입지 않도록하는 방법이 있나요? 객체를 json 문자열로 다시 직렬화하려고하면 문제가 발생하기 때문에이를 제거해야합니다. depthField 속성을 채웠지 만 기본적으로 false가 될 depthFieldSpecified 부울을보고 직렬화하지는 않습니다.

누군가 올바른 방향으로 나를 가리킬 수 있다면 기쁠 것입니다. 미리 감사드립니다.

답변

2

내가 아는 한 당신은 할 수 없습니다. Specified 속성은 XmlSerializer에 대해 a very specific use을 가지며 XML로 다시 serialize합니다.

내가 직접 Xsd2Code 생성기에서이 문제를 해결하려고했지만 지금까지는 행운이 없습니다. CodePlex에서 Xsd2Code 소스를 다운로드하여 시도해 볼 수 있습니다.

+0

답변 해 주셔서 감사합니다. 나는 한 가지 더 질문을했다. JSON 직렬화 및 직렬화 해제 만 사용합니다. 그런 다음 "Specified"접미사가 붙은 모든 필드와 속성을 아무 문제없이 안전하게 제거 할 수 있습니까? – vivekp

+0

링크 된 기사를 읽으십시오. XML에 따라 nullable이 될 수있는'int'를 예로 사용하는 것이 필요합니다. 대신 int를 사용할 수 있습니다. 그렇다면'Specified' 속성은 필요 없습니다. –

+0

"Specified"접미사가 붙은 모든 필드와 속성을 제거한 json serialization 및 deserialization에 대한 또 다른 질문을 만들었습니다. 그 질문은 http://stackoverflow.com/questions/25607237/can-i-safely-remove-the-fields-and-properties-with-the-suffix-specified-in-my-c에서 찾을 수 있습니다. – vivekp