C# PropertyInfo GetValue() возвращает объект, не соответствующий целевому типу

У меня есть проект, который считывает строки, возвращаемые из представления SQL Server, давайте назовем представление «Foo» и записываем эти строки в серию файлов. Используя LINQ2SQL для ссылки на представление в моем проекте, результаты Foo называются «FooResults».

Представленный ниже метод принимает тип объекта для анализа, а также разделитель, путь для записи файла и общий список данных для анализа. Я указал, где генерируется исключение.

public void WriteRecords<T>(T classType, string delimiter, string outputPath, List<T> data)
{
    // Extract the property names and format as a delimited string
    var properties = classType.GetType().GetProperties().ToList();
    var headerLine = string.Join(delimiter, properties.Select(p => p.Name).ToArray());
    var formattedHeaderLine = new[] { headerLine };

    // Foreach line in the data provided, extract the values and format as delimited string
    foreach (var d in data)
    {
        try
        {
            foreach (var pinfo in d.GetType().GetProperties())
            {
                // This is the line causing the problems
                var value = pinfo.GetValue(pinfo, null);
            }
        }
        catch (Exception ex)
        {
            var message = ex.Message;
        }
    }
}

Исключение составляет:

Объект не соответствует типу цели


person Andy Evans    schedule 18.08.2015    source источник


Ответы (1)


var value = pinfo.GetValue(pinfo, null);

Должно быть

var value = pinfo.GetValue(d, null);

Вы должны передавать экземпляр вместо самого PropertInfo.

person Mehmet Ataş    schedule 18.08.2015
comment
Забавно, что это именно то, что было сказано в сообщении. Тип цели не соответствует. - person usr; 18.08.2015