gpt4 book ai didi

c# - 强制 WCF 代理生成别名前缀

转载 作者:行者123 更新时间:2023-11-30 18:08:44 24 4
gpt4 key购买 nike

为了符合客户端架构,我一直在尝试生成一个 WCF 客户端代理,该代理能够序列化为具有如下所示的根节点的结构:

<quote:request
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:quote="https://example.com/services/schema/1.2/car_quote">

经过一些阅读,我幸运地通过使用 XmlNameSpaceDeclarations 和 XmlSerializerNamespaces 更新了代理以包含所需的“quote”命名空间

[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class request
{
[XmlNamespaceDeclarations()]
public XmlSerializerNamespaces xmlsn
{
get
{
XmlSerializerNamespaces xsn = new XmlSerializerNamespaces();
xsn.Add("quote", "https://example.com/services/schema/1.2/car_quote");
return xsn;
}
set
{
//Just provide an empty setter.
}
}
...

它提供:

<request
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:quote="https://example.com/services/schema/1.2/car_quote">

但是我对如何生成 quote:request 元素感到困惑。

环境:ASP.NET 3.5

最佳答案

如果没有一些 WSDL 来生成代理,我无法真正重现您的情况,但是如果我添加 XmlRoot 属性,序列化位对我有用。

using System.Xml.Serialization;

[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[XmlRoot(Namespace="https://example.com/services/schema/1.2/car_quote")]
public partial class request
{
[XmlNamespaceDeclarations()]
public XmlSerializerNamespaces xmlsn
{
get
{
XmlSerializerNamespaces xsn = new XmlSerializerNamespaces();
xsn.Add("quote", "https://example.com/services/schema/1.2/car_quote");
return xsn;
}
set { }
}
}

关于c# - 强制 WCF 代理生成别名前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3020459/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com