2013-02-15 3 views
0

У меня есть такой код:типа Аргумент не может быть назначен для параметра типа

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 < Operator Panel.Pair < string, string >>, string) 'имеет некоторые недопустимые аргументы

Почему я получаю эту ошибку?

+0

В чем ваш класс 'Pair'? – Habib

+0

Это мой класс шаблонов для обычной пары – user2071019

+0

Как насчет других ошибок? Как правило, вы получите вторую ошибку, которая говорит, что не так с типами. – CodesInChaos

ответ

1

Попробуйте

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

Я сделал, но нет необходимости писать OperatorPanel. – user2071019

+0

Это единственная ошибка компиляции, которая у вас есть? – hoang

2

В первом коде вы публикуемую (new List<Pair<string, string>>()), попытайтесь поместить курсор в Pair и увидеть, где Visual Studio считает, что она определена. Он должен отображать OperatorPanel.Pair<T1, T2>. Если он отображает имя типа Pair, определенного где-то в другом месте (или ошибки), тогда ваш тип ошибочен.

Есть несколько возможностей:

  • У вас есть еще Pair класс, определенный где-то (возможно, непреднамеренно), и он имеет в виду не тот.
  • Вам не хватает using directive наверху, чтобы указать, в каком пространстве имен компилятор должен искать ваш Pair.
  • У вас есть директива using другого пространства имен, которое содержит Pair which is not the one you want (например, using System.Web.UI).
  • У вас нет ссылки на DLL, в которой указан ваш Pair.
  • Ваше List<T> ссылка как-то неправильно (возможно, вы определили свой собственный?)
  • (Маловероятно) Вы определили свой собственный ToString на любой BuildId в том, что не возвращает string.

В принципе, проверьте все ваши типы. Сначала в вызывающем коде: List ссылается на System.Collections.Generic.List<T>, Pair ссылается на общий OperatorPanel.Pair<T1, T2> ...

+0

Все в порядке, это OperatorPanel.Pair – user2071019

+0

@ user2071019: Проверьте и другие типы. – Virtlink

+0

@ user2071019 - из вашего комментария это звучит так, как второй вопрос Virtlink о директиве 'use' - это решение. Вы должны отметить это как свой ответ. –

Смежные вопросы

 Смежные вопросы