首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XSDObjectGen.exe自动生成代码中的意外__前缀公共变量

XSDObjectGen.exe自动生成代码中的意外__前缀公共变量
EN

Stack Overflow用户
提问于 2009-04-09 10:38:36
回答 1查看 541关注 0票数 0

我已经使用XSDObjectGen.exe工具从xsd文件自动生成了一些类。我的类包含额外的公共变量,使用前导下划线命名,我不知道原因。

下面是xsd文件中的一个示例:

代码语言:javascript
复制
<xs:attribute name="Fare" type="xs:int" use="required">
    <xs:annotation>
        <xs:documentation>The fare price in pence</xs:documentation>
    </xs:annotation>
</xs:attribute>

相应的自动生成的C#代码是:

代码语言:javascript
复制
[XmlAttribute(AttributeName = "Fare", DataType = "int")]
[EditorBrowsable(EditorBrowsableState.Advanced)]
public int __Fare;

[XmlIgnore]
[EditorBrowsable(EditorBrowsableState.Advanced)]
public bool __FareSpecified;

[XmlIgnore]
public int Fare
{
    get { return __Fare; }
    set { __Fare = value; __FareSpecified = true; }
}

我理解所有这些代码,包括属性。不过,我不明白为何要这样做。

  • 为什么这个类序列化__Fare而不是Fare属性?在这种情况下,__Fare变量将是私有的(并重命名为_fare),或者可以使用自动属性。
  • __FareSpecified变量的用途是什么?

我们的感觉是,__-prefixed变量只会给使用这些类的开发人员带来不便,所以计划按以下方式重写:

代码语言:javascript
复制
[XmlAttribute(AttributeName = "Fare", DataType = "int")]
public int Fare{ get; set;}

甚至只是:

代码语言:javascript
复制
[XmlAttribute]
public int Fare{ get; set;}

有人能解释一下__-prefixed变量背后的原理吗?

注意,如果有的话,我们的xsd文件不会经常更改,所以我们重新生成这些类的能力并不重要。

编辑

我和这里的团队进行了反复检查,这个源代码实际上是使用XSDObjectGen.exe生成的,而不是我最初所说的xsd.exe。

EN

回答 1

Stack Overflow用户

发布于 2009-04-09 11:49:07

它区分公共财产和它的支持变量。

XSD对不可空类型执行XXXSpecified无意义的操作。

我并不是XSD工具的特别粉丝,因为像这样的东西。看看XSDObjectGenWSDL.EXE,看看它们是否更适合你。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/733666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档