参数类型不能分配参数类型

时间:2013-02-15 09:44:12

标签: c# .net types

我有这样的代码:

List<Pair<string, string>> docs = new List<Pair<string, string>>(); 
iErr = ftpconnect.ListAllDocuments(docs, build.BuildId.ToString());

ListAllDocuments的接口原型是:

Int32 ListAllDocuments(List<Pair<string, string>> DocList, string Path);

我收到错误

  

错误21:'OperatorPanelWrapper.FtpTransportLibWrapper.ListAllDocuments(System.Collections.Generic.List&lt; OperatorPanel.Pair&lt; string,string&gt;&gt;,string)'的最佳重载方法匹配有一些无效的参数

为什么我会收到此错误?

2 个答案:

答案 0 :(得分:2)

在您发布的第一个代码(new List<Pair<string, string>>())中,尝试将光标放在Pair中,并查看Visual Studio认为它的定义位置。它应显示OperatorPanel.Pair<T1, T2>。如果它显示在其他地方定义的Pair类型的名称(或错误),那么您的类型是错误的。

有几种可能性:

  • 您在某处(可能是无意中)定义了另一个Pair类,它指的是错误的类。
  • 您错过了顶部的using directive,以指定编译器应在哪个名称空间中查找Pair
  • 您拥有包含Pair which is not the one you want的不同命名空间的using指令(例如using System.Web.UI)。
  • 您缺少对定义Pair的DLL的引用。
  • 你的List<T>引用有点不对(也许你定义了自己的?)
  • (不太可能)您已在ToString上定义了自己的BuildId,但未返回string

基本上,检查所有类型。调用代码中的第一个:List引用System.Collections.Generic.List<T>Pair是否引用通用OperatorPanel.Pair<T1, T2> ...

答案 1 :(得分:1)

尝试

List<OperatorPanel.Pair<string, string>> docs = new List<OperatorPanel.Pair<string, string>>();