При создании экземпляра объекта с помощью конструктора в С# выдается исключение: Microsoft.CSharp.RuntimeBinder.RuntimeBC#

Место общения программистов C#
Ответить
Anonymous
 При создании экземпляра объекта с помощью конструктора в С# выдается исключение: Microsoft.CSharp.RuntimeBinder.RuntimeB

Сообщение Anonymous »

Я пытаюсь создать экземпляр объекта, используя данные из документа Excel.
По какой-то причине я получаю это исключение:

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'Лучшее соответствие перегруженного метода для 'TRY.Employee.Employee(double, string, string, double)' имеет несколько недопустимых аргументов'
из-за этой строчки:
employees.Add(new Employee(ws.Cells[i + 1, 1].Value, ws.Cells[i + 1, 2].Value, ws.Cells[i + 1, 3].Value, ws.Cells[i + 1, 4]));

или вот этот:
Employee employee = new Employee(ws.Cells[i + 1, 1].Value, ws.Cells[i + 1, 2].Value, ws.Cells[i + 1, 3].Value, ws.Cells[i + 1, 4]);

в чем может быть проблема? Мне нужно добавить все строки в свой список.
данные поступают правильно, я проверил их с помощью:
Console.WriteLine(ws.Cells[i+1, 3].Value)
типы данных конструктора действительны, я проверил это с помощью:
Console.WriteLine(ws.Cells[i + 1, 2].Value.GetType());
мой код:
public class Employee
{
public double Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public double Age { get; set; }

public Employee(double id, string firstName, string lastName, double age)
{
Id = id;
FirstName = firstName;
LastName = lastName;
Age = age;
}

}
`
` static void ExtractAndTransformData()
{
String filePath = "C:\\Users\\Owner\\Desktop\\employee3.xlsx";

Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();

Workbook wb;
Worksheet ws;

wb = excel.Workbooks.Open(filePath);
ws = wb.Worksheets[1];

ws.Columns.ClearFormats();
ws.Rows.ClearFormats();

int iTotalColumns = ws.UsedRange.Columns.Count;
int iTotalRows = ws.UsedRange.Rows.Count;

List employees = new List();

for (int i = 0; i < iTotalRows; i++)
{
Employee employee = new Employee(ws.Cells[i + 1, 1].Value, ws.Cells[i + 1, 2].Value, ws.Cells[i + 1, 3].Value, ws.Cells[i + 1, 4]);

employees.Add(new Employee(ws.Cells[i + 1, 1].Value, ws.Cells[i + 1, 2].Value, ws.Cells[i + 1, 3].Value, ws.Cells[i + 1, 4]));

}
}



Подробнее здесь: https://stackoverflow.com/questions/760 ... hrown-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»