我正在更新一些代码,以便它反映到它收到的模型中,并找出在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
类具有继承自基类的属性吗?
答案 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();