У меня есть ряд объектов, которые выглядят так:
namespace MyNamespace
{
[DataContract(Namespace="")]
public class MyClass1
{
[DataMember]
public string MyProperty {get;set;}
}
}
У меня есть метод, который выставляет WebInvoke, который выглядит следующим образом (очень упрощенный, поскольку сейчас он фактически ничего не делает, но все еще работает для этого теста)
[WebInvoke(UriTemplate = "", Method="POST")]
public MyNamespace.MyClass1 GetItem(MyClass1 postedItem) { return postedItem; }
Мне бы очень хотелось иметь возможность принимать XML, который выглядит следующим образом:
<MyClass1>
<MyProperty>1</MyProperty>
</MyClass1>
или это:
<MyClass1 xmlns:"http://schemas.datacontract.org/2004/07/MyNamespace">
<MyProperty>1</MyProperty>
</MyClass1>
Но пока что мои исследования показывают, что это невозможно. Моя единственная идея сейчас заключается в том, чтобы использовать IDispatchMessageInspector и использовать сообщение, удалить пространство имен xmlns, а затем разрешить WCF продолжить обработку сообщения. Однако мне не очень повезло с этим, потому что, как только я получу сообщение, он больше не будет доступен для потребления и десериализации WCF.
Есть ли более простой способ? Есть ли лучший способ?