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我反思的类具有继承自基类的属性吗?
您没有获得值的原因是因为您正在查看类型.如果传递实例,则属性仅具有值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)