以前,我在尝试在我的 ASMX webservice 和我的 .aspx 页面(webclient)之间共享类型定义时遇到了问题
据我了解,这产生的“问题”可以通过将客户端中创建的对象数组复制到 ASMX 代理类定义的新对象数组来解决。
作为 C# 的新手,我仍在为这个简单的任务而苦苦挣扎。以下是我的代码的更多部分(上一篇文章中的其他片段保持不变):
...这里是我填充要传递给 Web 服务的“测试数据”的地方:
// 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”
我接近了吗?