Почему WCF возвращает myObject [] вместо Списка <T> как, я ожидал?

Я изменил твой код, чтобы он работал. Вот, пожалуйста.

Таблица:

SQL> CREATE TABLE EquatA2
  2  (
  3      dat1 NUMBER(2,0),
  4      dat2 NUMBER(2,0),
  5      sol  NUMBER(6,3),
  6      note VARCHAR2(20)
  7  );

Table created.

SQL>

PL / SQL анонимная процедура:

SQL> DECLARE
  2    num1     EquatA2.dat1%TYPE;
  3    num2     EquatA2.dat2%TYPE;
  4    solution EquatA2.sol%TYPE;
  5    notes    EquatA2.note%TYPE;
  6  BEGIN
  7    delete from equata2;
  8    FOR i IN 1..10 LOOP
  9      num1 := ROUND(DBMS_RANDOM.VALUE(-4, +4), 0);
 10      num2 := ROUND(DBMS_RANDOM.VALUE(-4, +4), 0);
 11      -- DBMS_OUTPUT.PUT_LINE(num1);
 12      -- DBMS_OUTPUT.PUT_LINE(num2);
 13
 14      IF num1 != 0 THEN
 15          solution := -num2 / num1;
 16          notes := 'solvable';
 17      ELSIF num1 = 0 AND num2 = 0 THEN
 18         notes := 'indefinite';
 19      ELSIF num1 = 0 AND num2 != 0
 20        THEN notes := 'impossible';
 21      END IF;
 22
 23      INSERT INTO EquatA2 VALUES (num1, num2, solution, notes);
 24    END LOOP;
 25  END;
 26  /

PL/SQL procedure successfully completed.

Результат:

SQL> select * from equata2;

      DAT1       DAT2        SOL NOTE
---------- ---------- ---------- --------------------
         1         -4          4 solvable
        -1          0          0 solvable
         0          3          0 impossible
         0          2          0 impossible
         0          0          0 indefinite
         3         -1       ,333 solvable
         4          3       -,75 solvable
         1         -1          1 solvable
        -1         -2         -2 solvable
         2          3       -1,5 solvable

10 rows selected.

SQL>
63
задан Joshua 19 September 2010 в 07:50
поделиться

4 ответа

Можно указать, что Вы хотите использовать универсальный список вместо массива путем нажатия усовершенствованной кнопки, когда Вы добавляете ссылку, или можно щелкнуть правой кнопкой по сервисной ссылке и выбрать, настраивают для изменения его на месте.

причина состоит в том, что WCF сериализирует Универсальные списки как массивы для отправки через провод. Конфигурация просто говорит svcutil создавать прокси, который преобразовывает их назад в универсальный список для Вашего удобства.

83
ответ дан Stever B 24 November 2019 в 16:23
поделиться

Когда Вы используете svcutil.exe для создания Вас клиентский код, необходимо сказать его, как разрешить определенные ссылки, которые не доступны ему.

Это - то, как Вы сделали бы это для List<T>:

svcutil /o:YourService.cs /ct:System.Collections.Generic.List`1 http://example.com/mex
13
ответ дан Andrew Hare 24 November 2019 в 16:23
поделиться

Stever B корректен. WCF пытается действительно трудно не быть связанной с.NET. Можно хотеть позволить клиенту Java соединяться с компонентом. Массивы совместимы. Универсальные списки.NET не.

Однако Вы - больше, чем приветствие для создания собственного прокси-класса, который преобразует массив назад в Список или что-либо еще, что Вы хотели бы. Хорошая вещь о ручном создании Ваших собственных прокси состоит в том, что Вы полностью управляете тем, что они делают.

8
ответ дан Tad Donaghe 24 November 2019 в 16:23
поделиться

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

2
ответ дан Jason Punyon 24 November 2019 в 16:23
поделиться
Другие вопросы по тегам:

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