У меня есть служба WCF со многими функциями. Некоторые из них содержат аргументы List<string>
. напримерДля некоторых функций в строке WCF [] не преобразовывается в Список <string>
[ServiceContract]
public interface IQueriesService
{
[OperationContract]
DataTable ExecuteSimpleQuery(List<string> sel, List<string> fr, List<string> whereCells, List<string> types, List<string> whereOps, List<string> whereValues, List<string> logOp, int cultureLCID);
}
public class UniverService : IQueriesService
{
public DataTable ExecuteSimpleQuery(List<string> sel, List<string> fr, List<string> whereCells, List<string> types, List<string> whereOps, List<string> whereValues, List<string> logOp, int cultureLCID)
{
DataTable dt = new DataTable();
...
return dt;
}
}
simpleQ.Select = simpleQ.Select.Distinct().ToList();
simpleQ.From = simpleQ.From.Distinct().ToList();
DataTable dt = svc.ExecuteSimpleQuery(simpleQ.Select, simpleQ.From, simpleQ.WhereCell, simpleQ.Type, simpleQ.WhereOp, simpleQ.WhereValue, simpleQ.LogicOperation, Thread.CurrentThread.CurrentUICulture.LCID);
где simpleQ.Select, С, ... имеют тип List<string>
Когда я добавляю мою ссылку на службу в другой проект, в окне Service Reference Settings меняю Collection Type от System.Array
к System.Collections.Generic.List
. Моя проблема в том, что указанное преобразование работает для некоторых моих функций и не для других. Я имею в виду, добавив ссылку на службу и восстановив ее. Я получаю сообщение об ошибке Невозможно преобразовать из списка в строку []. Когда я смотрю на созданные прокси-классы, я вижу, что эти функции действительно содержат в качестве аргументов строковые массивы (а не списки). Кто может мне помочь?
Я бы предположил, что те, которые работают, имеют тип возврата «Список», где, как тот, который вы указали в своем вопросе, имеет тип возврата «DataTable», вы знакомы с типами возврата при использовании методов ..? Кроме того, переход через код, вероятно, даст ответ в отношении того, где ваша функциональность/логика кода разбивается – MethodMan
интересное соображение, но я просмотрел свои коды и 1. 'void DeleteStudents (список ids);' this one works 2. 'void SaveXMLQuery (название строки, описание строки, bool isFavourite, List fr, List sel)' также не работает ... есть ли что-нибудь, что я должен знать о типах возврата? может быть, я пойму после этого ... –
'Artak' опубликовать все обновления кода в вашем исходном вопросе также покажет код с полной подписью метода. вам нужно показать, что, как и метод вызова, также показывают, как вы объявленные или назначенные 'fr' и' sel' показать все соответствующие коды – MethodMan