Rob*_*tMS 10 c# xsd code-generation xsd.exe
我正在使用XSD在C#中定义我的DTO类型.我正在使用XSD.exe来生成XSD的类.
我有一个定义地址类型的Common.xsd,我想在多个类中使用它:
<xs:complexType name="Address">
<xs:sequence>
<xs:element name="Street1" type="xs:string"/>
<xs:element name="Street2" type="xs:string"/>
<xs:element name="City" type="xs:string"/>
<xs:element name="State" type="xs:string"/>
<xs:element name="Zip" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="Address" type="mhm:Address"/>
Run Code Online (Sandbox Code Playgroud)
我在XSD公司中引用它:
<xs:include schemaLocation=".\Common.xsd"/>
<xs:complexType name="Company">
<xs:sequence>
<xs:element name="AdmCode" type="xs:string"/>
<xs:element name="CompanyCode" type="xs:string"/>
<xs:element name="Name" type="xs:string"/>
<xs:element ref="mhm:Address"/>
</xs:sequence>
</xs:complexType>
<xs:element name="Company" type="mhm:Company"/>
Run Code Online (Sandbox Code Playgroud)
员工XSD:
<xs:include schemaLocation=".\Common.xsd"/>
<xs:complexType name="Employee">
<xs:sequence>
<xs:element name="EmployeeNumber" type="xs:int"/>
<xs:element name="FirstName" type="xs:string"/>
<xs:element name="LastName" type="xs:string"/>
<xs:element name="Address" type="mhm:Address"/>
</xs:sequence>
</xs:complexType>
<xs:element name="Employee" type="mhm:Employee"/>
Run Code Online (Sandbox Code Playgroud)
我使用这个命令行生成类:
xsd .\XSD\Common.xsd /c /o:. /n:"DomainModel"
xsd .\XSD\Employee.xsd /c /o:. /n:"DomainModel"
xsd .\XSD\Company.xsd /c /o:. /n:"DomainModel"
Run Code Online (Sandbox Code Playgroud)
当我去编译项目时,我发现在Company.cs类文件和Employee.cs类文件中都生成了Address类型.
如何在Common.cs类文件中仅生成一次生成的地址类型,而Employee和Company类型使用此单一地址类型?
您可以使用XSD.exe多个文件参数:
xsd .\XSD\Common.xsd .\XSD\Employee.xsd .\XSD\Company.xsd /c /o:. /n:"DomainModel"
Run Code Online (Sandbox Code Playgroud)