Почему мой сервис WCF возвращает и ВЫСТРАИВАЕТ вместо Списка <T>?

В сети servce я говорю

 public List<Customer> GetCustomers()
    {
        PR1Entities dc = new PR1Entities();
        var q = (from x in dc.Customers
                select x).ToList();
        return q;
    }

(клиент является объектом объекта),

Затем я генерирую прокси, когда я добавляю сервис.. и в reference.cd это говорит

public wcf1.ServiceReference1.Customer[] GetCustomers() {
        return base.Channel.GetCustomers();
    }

ПОЧЕМУ ЭТО - МАССИВ AN? Я попросил Список.

помощь.

13
задан punkouter 26 March 2010 в 17:43
поделиться

3 ответа

Щелкните правой кнопкой мыши ссылку на службу и выберите "Настроить ссылку на службу".

В раскрывающемся списке Тип коллекции выберите тип System.Collections.Generic.List.

Я считаю, что по умолчанию используется Array, потому что он наиболее совместим при сериализации. Если вы используете службу из чего-то, что распознает что-то более сложное, вы можете настроить, как я уже упоминал.

30
ответ дан 1 December 2019 в 19:30
поделиться

Щелкните правой кнопкой мыши ссылку на службу -> Настроить ссылку службы -> В разделе "Тип данных" измените "Тип сбора" на System.Collections .ArrayList или любой другой тип, в который вы хотите десериализовать массив.

Ваш список сериализуется в массив (на стороне сервера). Вы выбираете, как его десериализовать (на стороне клиента).

4
ответ дан 1 December 2019 в 19:30
поделиться

Потому что именно так сериализуется список. Ваш класс Customer на стороне клиента был сгенерирован из метаданных службы, которые эффективно описывают, как он сериализуется, а не как он был изначально определен. Если ваш исходный класс Customer доступен, вы можете указать его повторно использовать в коде клиента при создании ссылки на службу, и тогда он будет представлен как List .

1
ответ дан 1 December 2019 в 19:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: