开发者

Return List<T> as XML Response from WCF Service?

I have a WCF Operation that returns a List of Colors:

public List<Color> GetCol开发者_开发技巧ors()
{
    List<Color> colors = new List<Color>();
    colors.Add(new Color {Name = "Red", Code = 1});
    colors.Add(new Color {Name = "Blue", Code = 2});

    return colors;   
}

When I run this in the WCF Test Client, it works fine and I can see the array of colors, but what I would actually like is if it returned the XML Response and then I could set a RichTextBox's Text to the contents of the xml. How can I do this?


If you want the XML representation of the list return to the client my advice would be to serialize the list and return it as a string to the client.

Here is some code that can get you started. Haven't tested it but I think it might be easy for you to change.

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();
    }
}

Hope it helps


If you want your WCF service to return XML, then make it return XML. If you want it to return List<Color>, then it should return List<Color>.


You can't use open generics in WCF contracts. SOAP doesn't have any support for generics.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜