Я использую contactsreader.dll
импортировать мои контакты Gmail. Один из моего метода имеет out
параметр. Я делаю это:
Gmail gm = new Gmail();
DataTable dt = new DataTable();
string strerr;
gm.GetContacts("chendur.pandiya@gmail.com", "******", true, dt, strerr);
// It gives invalid arguments error..
И мой класс Gmail имеет
public void GetContacts(string strUserName, string strPassword,out bool boolIsOK,
out DataTable dtContatct, out string strError);
Я передаю правильные значения для out
параметры?
Вам необходимо передать их как объявленные переменные с ключевым словом out
:
bool isOk;
DataTable dtContact;
string strError;
gm.GetContacts("chendur.pandiya@gmail.com", "******",
out isOk, out dtContact, out strError);
В другом словами, вы не передаете значения этим параметрам, они получают их по пути out
. Только в одну сторону.
Я бы посоветовал вам передать переменную типа bool вместо буквального значения и поместить перед ними ключевое слово out.
bool boolIsOK = true;
gm.GetContacts("chendur.pandiya@gmail.com", "******", out boolIsOK, out dt, out strerr)
Поскольку определение вашей функции
public void GetContacts(string strUserName, string strPassword, out bool boolIsOK, out DataTable dtContatct, out string strError);
требует передачи некоторых out
параметров, вам нужно соблюдать сигнатуру метода при его вызове
gm.GetContacts("<username>", "<password>", out boolIsOK, out dtContatct, out strError);
Обратите внимание, что out
параметры - это просто заполнители, поэтому вам не нужно указывать значение перед передачей их методу. Дополнительную информацию о out
параметрах можно найти на сайте MSDN.
Нужно ставить "out" при вызове метода - gm.GetContacts("chendur.pandiya@gmail.com", "******", out yourOK, out dt, out strerr);
И кстати, не нужно делать DataTable dt = new DataTable();
перед вызовом.
Идея в том, что метод GetContacts
инициализирует ваши out
переменные.
Ссылка на MSDN
учебник.