我猜答案是否定的,但是有一种方法可以将生成的类移动到其他名称空间吗?
背景:
我有一个XSD文件,该文件定义了一个类,该类通过xsd.exe转换为C#类。默认情况下,xsd.exe将类放入全局名称空间:
XSD:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
elementFormDefault="qualified"
xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
<xs:complexType name="Delays">
<xs:sequence>
<xs:element name="Delay" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:double">
<xs:attribute name="function" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="Driver">
<xs:complexType>
<xs:sequence>
<xs:element name="Delays" type="Delays" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:schema>
生成的类:
//------------------------------------------------------------------------------
// <auto-generated>
// Dieser Code wurde von einem Tool generiert.
// Laufzeitversion:4.0.30319.42000
//
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
// der Code erneut generiert wird.
// </auto-generated>
//------------------------------------------------------------------------------
using System.Xml.Serialization;
//
// Dieser Quellcode wurde automatisch generiert von xsd, Version=4.6.1055.0.
//
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
public partial class Driver {
private DelaysDelay[] delaysField;
private string nameField;
/// <remarks/>
[System.Xml.Serialization.XmlArrayItemAttribute("Delay", IsNullable=false)]
public DelaysDelay[] Delays {
get {
return this.delaysField;
}
set {
this.delaysField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string name {
get {
return this.nameField;
}
set {
this.nameField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class DelaysDelay {
private string functionField;
private double valueField;
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string function {
get {
return this.functionField;
}
set {
this.functionField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlTextAttribute()]
public double Value {
get {
return this.valueField;
}
set {
this.valueField = value;
}
}
}
我希望该类位于自定义名称空间中。但是,.cs文件的生成不在我的控制范围内。编辑生成的.cs文件是一种不好的做法,而且.cs文件也不属于SCM。 “ Driver”类也扩展到存储在SCM中的单独文件中。
因此,无论如何,都可以将类移到没有
的自定义名称空间中答案 0 :(得分:1)
要更改所生成类的名称空间,您需要将附加的parameter传递给xsd.exe
调用:
/ n [amespace] **:** namespace指定运行时名称空间 生成的类型。默认名称空间是架构。
重新生成类后,您还需要将该类的其他部分移动到新的名称空间。
答案 1 :(得分:0)
好的,我想出了一个解决方法...
我只是从生成的类继承,并在自己的代码中使用MyDriver而不是Driver:
ab.b