Список возврата <T>как XML-ответ от службы WCF? - PullRequest
4 голосов
/ 13 мая 2011

У меня есть операция 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. к содержанию XML. Как я могу это сделать?

Ответы [ 3 ]

2 голосов
/ 13 мая 2011

Если вы хотите, чтобы 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 голос
/ 13 мая 2011

Если вы хотите, чтобы ваша служба WCF возвращала XML, сделайте так, чтобы она возвращала XML.Если вы хотите, чтобы он возвращал List<Color>, то он должен возвращать List<Color>.

0 голосов
/ 13 мая 2011

Вы не можете использовать открытые дженерики в контрактах WCF.SOAP не поддерживает обобщений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...