在C#webservice中使用NameValueCollection不会产生XML可序列化错误

当我尝试“添加Web引用”到我的ASMX代理项目时收到此错误消息:
**"To be XML serializable,types which inherit from ICollection must have an    implementation of Add(System.String) at all levels of their inheritance hierarchy. System.Collections.Specialized.NameValueCollection does not implement Add(System.String)"**

我需要将名称 – 值对传递给我的Web服务,这就是我想出的:

public class FileService : System.Web.Services.WebService
{

    [WebMethod]
    public string UploadFile(byte[] incomingArray,string FileName,long FileLengthInBytes,NameValueCollection nvcMetaData)

我现在意识到我需要帮助改变这一点(我是C#的新手和.Net框架的这一部分).如果我可以使用它,我的Web服务将需要由ColdFusion调用(现在我使用.aspx页面调用Web服务).因此无论我想出什么方式来传递可变数量的NAME-VALUE对,我都需要它可由CF调用.提前致谢.

解决方法

作为替代方案,您可以只定义一个简单的NameValue类并接收一个数组.
public class NameValue
{
   public string Name{get;set;}
   public string Value{get;set;}
}

[WebMethod]
public string UploadFile(byte[] incomingArray,NameValue[] nvcMetaData)

如果在客户端有一个NameValueCollection,您可以轻松映射到您的类型.检查我在question中发布的样本

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...