"对象与目标类型不匹配"反映对象属性时的异常

时间:2016-04-13 07:05:00

标签: c# .net reflection

我正在更新一些代码,以便它反映到它收到的模型中,并找出在PDF文件中写出字段的属性,而不是我为每个PDF子类化和手动映射字段。问题在于,由于Object does not match target type异常,我无法获得该属性的值。在SO上查看类似的问题似乎是一个简单的修复,但只是不想工作。这是我通过LINQPad测试的代码:

var pdf = typeof(PdfModel2);

pdf.GetProperties().Where(
    p =>
        p.GetCustomAttribute<PdfTextFieldAttribute>() != null).Select(
    p =>
        p.GetValue(pdf)).Dump();

有人能指出我在哪里出错吗?是因为我反映的PdfModel2类具有继承自基类的属性吗?

1 个答案:

答案 0 :(得分:5)

您没有获得值的原因是因为您正在查看该类型。如果将实例传递给GetValue,则属性仅具有值。所以你需要做的是:

var pdf = new PdfModel2 { SomeProperty = "SomeValue" };
var pdfType = pdf.GetType();

pdfType.GetProperties().Where(
    p =>
        p.GetCustomAttribute<PdfTextFieldAttribute>() != null).Select(
    p =>
        p.GetValue(pdf)).Dump();