2016-12-14 5 views
0

Мне нужно реализовать и SOAP-сервис, не используя WSDL (потому что он сломан и не будет исправлен). Теперь им застрял в точке, где мне нужно, чтобы установить тип атрибутов для некоторых классов (базовые классы и производные один)C# Escaping XmlType Имя со специальным символом в XmlType() Атрибут

нормально плохо украшают свои DTOs так:

BaseClass:

[XmlInclude(typeof(Person))] 
[XmlType("Partner", Namespace = "http://....")] 
public abstract class Partner 
{...} 

и DerivedOne:

[XmlType("Person")] 
public class Person : Partner 
{...} 

результат выглядит следующим образом:
<tar:Partner xsi:type="Person">

но теперь API Документ говорит мне, чтобы создать запрос, как:

<tar:Partner xsi:type="par:CT_Person">

(протестировано в Скрипач и работ) Как можно создать TYPENAME набор с префиксом пространства имен (номинальной) или введите имя как:

[XmlType("par:CT_Person")]?

деактивировать (переопределить) функцию escape-функции для меня не является вариантом.

благодарит заранее.

ответ

0

после тестирования весь день и попытки ... сразу после написания моего вопроса я получил ответ сам.

Когда я устанавливаю пространство имен в своем базовом классе, я могу установить пространство имен в моем производном с другим URL-адресом. чем это работает ...

надеюсь, что этот пост поможет кому-то еще столкнуться с проблемой :)