Раньше я сталкивался с проблемой при попытке поделиться определением типа между моим веб-сервисом ASMX и моей страницей .aspx (веб-клиент).
Запутался в C# Массив объектов и неявное преобразование типов а>
Насколько я понимаю совет, «проблема», которую это создает, может быть решена путем копирования массива объектов, созданных в клиенте, в новый массив объектов, как определено прокси-классом ASMX.
Будучи новичком в C #, я все еще борюсь с этой простой задачей. Вот еще части моего кода (остальные фрагменты в предыдущем посте остались без изменений):
... здесь я заполняю «тестовые данные», которые хочу передать веб-службе:
// create an array of MetaData objects
MetaData[] nvPairs = new MetaData[20]; // arbitrary length of 20 pairs
// create arbitrary MetaData objects in the array
nvPairs[0] = new MetaData("Grant Number", "2577-9912");
nvPairs[1] = new MetaData("OPEAnalyst", "Simpson");
... здесь я пытаюсь выполнить функцию "копирования" из "реального" типа, определенного в моем пространстве имен TRIMBrokerUtil (которое я не могу полностью использовать из-за прокси-сервера), в прокси-версию этого типа:
protected TRIMBrokerASMXProxy.ASMXProxy.MetaData[] CopyMetaData(
MetaData utilArray)
{
TRIMBrokerASMXProxy.ASMXProxy.MetaData[] outArray =
new TRIMBrokerASMXProxy.ASMXProxy.MetaData[utilArray.Name.Length];
int i;
for (i = 0; i < utilArray.Name.Length; i++)
{
outArray[i].Name = utilArray.Name;
outArray[i].Value = utilArray.Value;
}
return outArray;
}
... а затем здесь я пытаюсь вызвать эту функцию (компилятор отмечает 2 ошибки в этой строке:
TRIMBrokerASMXProxy.ASMXProxy.MetaData[] kvData =
CopyMetaData(metaDataArray);
Обе ошибки компиляции ниже указывают на одну и ту же строку:
Ошибка 1 Лучший перегруженный метод, соответствующий '_Default.CopyMetaData(TRIMBrokerUtil.MetaData)', имеет недопустимые аргументы.
Ошибка 2. Аргумент «1»: невозможно преобразовать «TRIMBrokerUtil.MetaData[]» в «TRIMBrokerUtil.MetaData».
Я близко?