Я предполагаю, что ответ - нет, но есть ли способ переместить сгенерированный класс в другое пространство имен?
Справочная информация:
У меня есть XSD-файл, который определяет класс, который превращается в класс C # с помощью xsd.exe. По умолчанию 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. Класс «Драйвер» также расширен в отдельном файле, который хранится в SCM.
Итак, есть ли способ переместить класс в пользовательское пространство имен без
- редактировать сгенерированный код?
- изменить поколение?
- изменить вызов xsd.exe?