Я работаю над приложением C#. У меня есть несколько списков объектов, т.е. каждый список содержит значения разных типов, такие как double, int et c, хранящиеся в форме объекта в списке. Каждый список содержит объекты одного и того же типа.
List<object> l1 = {1,2,3,4,5,6};
List<object> l2 = {1.1, 2.1, 3.2, 4.2, 5.6, 6.1, 7.5, 8.6, 9.2};
Может быть много других списков разных типов, хранящихся в форме объекта. Моя проблема в том, что мне нужно распознать тип объекта списка по первому значению и добавить все элементы списка. Я использую следующий код, чтобы получить тип.
Type typeOfCurrentField = l1[0].GetType();
Это дает мне тип объекта. Теперь мне нужно преобразовать все значения списка в этот тип. В настоящее время я пробую это:
dynamic sum = null;
Type typeOfCurrentField = null;
for(int i = 0; i < l1.Count; i++)
{
if (typeOfCurrentField == null)
{
typeOfCurrentField = l1[i].GetType();
sum = Convert.ChangeType(l1[i], typeOfCurrentField);
}
else
{
sum = sum + Convert.ChangeType(l1[i], typeOfCurrentField);;
}
}
Это дает мне следующее исключение:
Operator '+' cannot be applied to operands of type 'double' and 'object' Exception of type ==> Microsoft.CSharp.RuntimeBinder.RuntimeBinderException
Как я могу решить эту проблему?