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

Gup*_*R4c 0 .net c# 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();
Run Code Online (Sandbox Code Playgroud)

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

Ric*_*Net 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();
Run Code Online (Sandbox Code Playgroud)