1

我正在使用反射来获取一些属性值。代码(似乎)按预期工作,但 Visual Studio 报告错误 BC30456“CustomAttributes”不是“PropertyInfo”的成员。我第一次编写它编译干净的代码;在稍后的某个时间点,VS 开始一致地标记错误。我已经清理并重建了解决方案,关闭并重新打开了 VS 几次。当我运行该项目时,它允许我“运行最后一次成功的构建”并且页面 - 包括其他地方的任何更改 - 按预期执行。该代码是 Visual Studio Community 2015 Update 1 下网站(不是 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

VS2015 标记的错误

如果我使用对象浏览器,则显示的 System.Reflection.PropertyInfo 实例不少于 5 个。每个都有相同的信息(MustInherit 类 PropertyInfo,继承 System.Reflection.MemberInfo,System.Reflection 的成员),但只有 2 个包含 CustomAttributes 属性。我猜编译器正在查看 PropertyInfo 的“错误”实例......?
该代码确实有效,所以这不是一个阻碍,但我当然希望我的代码能够干净地编译,并了解这个错误的原因。

4

0 回答 0