返回列表<t>作为来自WCF服务的XML响应?</t>

时间:2011-05-13 16:36:23

标签: c# wcf

我有一个返回颜色列表的WCF操作:

public List<Color> GetColors()
{
    List<Color> colors = new List<Color>();
    colors.Add(new Color {Name = "Red", Code = 1});
    colors.Add(new Color {Name = "Blue", Code = 2});

    return colors;   
}

当我在WCF测试客户端中运行它时,它工作正常,我可以看到颜色数组,但我真正想要的是它是否返回XML响应然后我可以设置RichTextBox' s文本到xml的内容。我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

如果您希望列表的XML表示返回给客户端,我的建议是序列化列表并将其作为字符串返回给客户端。

以下是一些可以帮助您入门的代码。没有测试过,但我认为你可能很容易改变。

public string GetColorsXmlRepresentation()
{
    var colors = new List<Color>();

    colors.Add(new Color {Name = "Red", Code = 1});
    colors.Add(new Color {Name = "Blue", Code = 2});

    return Serialize<List<Color>>(colors);
}


public string Serialize<T>(T instance)
{
    var data = new StringBuilder();
    var serializer = new DataContractSerializer(instance.GetType());

    using (var writer = XmlWriter.Create(data))
    {
       serializer.WriteObject(writer, instance);
       writer.Flush();

      return data.ToString();
    }
}

希望有所帮助

答案 1 :(得分:1)

如果希望WCF服务返回XML,则使其返回XML。如果您希望它返回List<Color>,则应返回List<Color>

答案 2 :(得分:0)

您不能在WCF合同中使用开放式泛型。 SOAP对泛型没有任何支持。