gpt4 book ai didi

.net - ArrayOf 将 List 与 WCF 休息服务一起使用时

转载 作者:行者123 更新时间:2023-12-05 00:41:18 25 4
gpt4 key购买 nike

我正在尝试使用 .NET 4.0 和 WCF 创建 REST Web 服务。我的 REST 服务正在返回一个列表,然后将其序列化为 XML。我遇到的问题是返回的 XML 以我不喜欢的 ArrayOf 开头。

换句话说,现在 XML 看起来像这样:

<ArrayOfAchievement>
<Achievement>
...
</Achievement>
</ArrayOfAchievement>

我希望 XML 看起来像这样:
<Achievements>
<Achievement>
...
</Achievement>
</Achievements>

如果我创建一个新类并将其命名为 AchievementsList,它具有 List 属性,如下所示:
public class AchievementsList
{
public List<Achievement> Achievements { get; set; }
}

然后让我的服务返回上面的类而不是 List ,XML 最终看起来像这样:
<AchievementsList>
<Achievements>
<Achievement>
...
</Achievement>
</Achievements>
</AchievementsList>

这是错误的(因为它增加了另一个不属于那里的级别)。

另一个问题是我还需要为对象应用命名空间,如下所示:
[XmlRoot(Namespace="NameSpaceURL")]
public class AchievementsList
{
public List<Achievement> Achievements { get; set; }
}

如果我只返回一个 List ,我就无法做到这一点。

那么对于这两个问题我该怎么办呢?

巴拉

最佳答案

  • 您与 AchievementList 走在正确的轨道上类,但你需要做的是装饰Achievements使用 XmlElement 列出属性属性,并提供各个元素的名称。
  • 命名空间位于 AchievementList类,就像你拥有它一样。

  • 示例代码:
    [Serializable]
    public class Achievement {
    public string Name { get; set; }
    }

    [Serializable]
    [XmlRoot(ElementName="Achievements", Namespace="http://www.mynamespace.com")]
    public class AchievementList
    {
    [XmlElement("Achievement")]
    public List<Achievement> Achievements { get; set; }

    public AchievementList()
    {
    Achievements = new List<Achievement>();
    }

    public void Add(Achievement a)
    {
    Achievements.Add(a);
    }
    }

    您的输出将类似于:
    <?xml version="1.0" encoding="utf-16"?>
    <Achievements xmlns="http://www.mynamespace.com">
    <Achievement>
    <Name>Woke Up</Name>
    </Achievement>
    <Achievement>
    <Name>Went to work</Name>
    </Achievement>
    <Achievement>
    <Name>Slacked off</Name>
    </Achievement>
    </Achievements>}

    关于.net - ArrayOf 将 List<T> 与 WCF 休息服务一起使用时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3088124/

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