Я хочу svcutil экспортировать метаданные из моих библиотек в один файл xsd. Поскольку он разделяет метаданные на разные файлы по пространству имен, я хочу переопределить его для всех классов в едином пространстве имен.
Я могу «попробовать» сделать это двумя способами:
1) Переопределите его для каждого класса в атрибуте DataContract, как это
[DataContract (Namespace = "http://mynamspace.com")]
но я получаю следующее препятствие - Я не могу установить атрибут для класса, производного от стандартного класса
2) Переопределить пространство имен для каждого пространства имен в сборке, включая экспорт классов.
[Assembly: ContractNamespaceAttribute (SerializationConstants.DefaultNamespace, ClrNamespace = "UBP.AddInfo")]
Но здесь я бросаю вызов другой проблеме - эта директива не затрагивает перечисления. Они остаются экспортируемыми в пространство имен, как это определено в сборке. Так что это заставило меня установить атрибут DataContract для этих перечислений напрямую. НО!!!! в этом случае перечисление экспортируется неправильно. Вместо
<xs:simpleType name="AddInfoValueType">
<xs:restriction base="xs:string">
<xs:enumeration value="String" />
<xs:enumeration value="DateTime" />
<xs:enumeration value="Number" />
<xs:enumeration value="BynaryData" />
</xs:restriction>
</xs:simpleType>
Я получаю
<xs:simpleType name="AddInfoValueType">
<xs:restriction base="xs:string" />
</xs:simpleType>
Кто-нибудь сталкивался с такими проблемами?