C# 如何获得正确的命名空间输出

C# 如何获得正确的命名空间输出,c#,xml,wcf,xml-serialization,C#,Xml,Wcf,Xml Serialization,我有一个实现IXmlSerializable的类。当我使用自定义XmlWriter/XmlReader时,它工作正常并输出正确的输出。然而,当我在WCF中使用它时,我得到了一个非常干净的输出,它有点太干净了,因为它不包含任何类型信息: <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <GetModelCResponse xmlns="http:

我有一个实现IXmlSerializable的类。当我使用自定义XmlWriter/XmlReader时,它工作正常并输出正确的输出。然而,当我在WCF中使用它时,我得到了一个非常干净的输出,它有点太干净了,因为它不包含任何类型信息:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Body>
        <GetModelCResponse xmlns="http://tempuri.org/">
            <GetModelCResult>
                <D xmlns="">D</D>
                <E xmlns="">
                    <B>B</B>
                    <A>A</A>
                </E>
            </GetModelCResult>
        </GetModelCResponse>
    </s:Body>
</s:Envelope>

D
B
A.
但是,我希望这样(使用XmlWriter时确实会编写):


D
A.
B

我做错了什么?这是一个配置问题吗?

不久前我们也遇到过类似的问题,我在过去的笔记中注意到了这一点:


看看这是否提供了一些有用的信息。

不久前我们也有类似的情况,我在过去的笔记中提到了这一点:


看看这是否提供了一些有用的信息。

您可以更改wcf使用的序列化程序

实现这一点的一种方法是用

[XmlSerializerFormat]
属性位于服务实现的顶部

如果你需要更多的铃声和哨子,你可以考虑自定义序列化器。< /P> 丹·里格斯比(Dan Rigsby)不久前在纽约大学写了一篇关于这个话题的文章。在文章的末尾,他讨论了如何创建IOperationBehavior的实现来


这个想法很简单,创建一个操作行为,用一个自定义的序列化程序替换普通的序列化程序。只要该类继承自属性,您就可以使用它来修饰实现。

您可以更改wcf使用的序列化程序

实现这一点的一种方法是用

[XmlSerializerFormat]
属性位于服务实现的顶部

如果你需要更多的铃声和哨子,你可以考虑自定义序列化器。< /P> 丹·里格斯比(Dan Rigsby)不久前在纽约大学写了一篇关于这个话题的文章。在文章的末尾,他讨论了如何创建IOperationBehavior的实现来


这个想法很简单,创建一个操作行为,用一个自定义的序列化程序替换普通的序列化程序。只要该类继承自属性,您就可以使用它来装饰实现。

谢谢您的回复,但我不知道如何使用它来更改实际输出。谢谢您的回复,但我不知道如何使用它来更改实际输出。