我使用反射来获取一些属性值。代码(似乎)按预期工作,但Visual Studio报告错误BC30456“CustomAttributes”不是“PropertyInfo”的成员。 我第一次编写代码时干净利落地编译;在稍后的某个时候,VS开始一致地标记错误。我已经清理并重建了解决方案,关闭并重新打开VS几次。当我运行项目时,它允许我“运行最后一次成功构建”,页面 - 包括其他任何更改 - 按预期执行。 该代码是Visual Studio Community 2015,Update 1下的WebSite(非Web项目/ Web应用程序)的一部分。代码位于App_Code文件夹中的类中。
For Each prop As System.Reflection.PropertyInfo In obj.GetType().GetProperties()
Dim ignore As Boolean = False
For Each x In prop.CustomAttributes()
If x.AttributeType.Name = "XmlIgnoreAttribute" Then
ignore = True
Exit For
End If
Next
... other stuff
Next
如果我使用对象浏览器,则显示的System.Reflection.PropertyInfo实例不少于5个。每个都有相同的信息(MustInherit类PropertyInfo,继承System.Reflection.MemberInfo,System.Reflection的成员),但只有2包含CustomAttributes属性。我猜测编译器正在查看PropertyInfo的“错误”实例......? 代码确实有效,所以这不是一个show-stopper,但我当然希望我的代码能够干净地编译,并了解这个错误的原因。