c# - xsd.exe 生成类的可空值

标签 c# .net-2.0 code-generation xsd.exe

我一直在使用 xsd.exe 来生成一个用于反序列化 XML 的类。 我在不需要的源 xsd 中有十进制值:

<xs:attribute name="Balance" type="xs:decimal" use="optional" />

xsd 生成的类生成以下代码:

private decimal balanceField;

[System.Xml.Serialization.XmlAttributeAttribute()]
public decimal Balance {
    get {
        return this.balanceField;
    }
    set {
        this.balanceField = value;
    }
}

我注意到这是不可空的。

我如何改为将字段生成为可为空,如下所示:

private decimal? balanceField;

[System.Xml.Serialization.XmlAttributeAttribute()]
public decimal? Balance {
    get {
        return this.balanceField;
    }
    set {
        this.balanceField = value;
    }
}

最佳答案

目前它可以正常工作。我正在使用 xsd v2.0.50727.42 并且:

<xs:element name="Port" type="xs:int" nillable="true" />

准确生成您一直在寻找的内容(没有多余的 ...Specified 字段和属性):

private System.Nullable<int> portField;

[System.Xml.Serialization.XmlElementAttribute(IsNullable = true)]
public System.Nullable<int> Port {
    get {
        return this.portField;
    }
    set {
        this.portField = value;
    }
}

关于c# - xsd.exe 生成类的可空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1420930/

相关文章:

c# - 本地 Postgres 的 Npgsql 连接字符串

architecture - 客户端(桌面应用程序)提取数据......但我希望服务器(网络应用程序)推送数据

c# - 为什么透明颜色在面板上不起作用

c++ - Bazel 头文件代码生成器

java - 如何在eclipse中生成构造函数

c# - MVVM ListView 多重绑定(bind) SelectedItems + SelectedItem (ListView) + SelectedItem (ComboBox) 到 TextBox.Text。无法正确更新

c# - 单击鼠标左键打开上下文菜单 wpf c#

c# TCP套接字停止接收数据包

c# - 有没有办法从 ExcelWorkBook 中获取 byte[] 而无需先将其保存到磁盘

c# - Linux 上带有 .NET 核心的 Roslyn : How can I load an external project?