1

リフレクションを使用してプロパティ値を取得しています。コードは意図したとおりに動作するように見えますが、Visual Studio はエラー BC30456 を報告します。「CustomAttributes」は「PropertyInfo」のメンバーではありません。初めてコードを書いたとき、それはきれいにコンパイルされました。ある時点で、VS は一貫してエラーにフラグを立て始めました。ソリューションをクリーンアップして再構築し、VSを数回閉じて再度開きました。プロジェクトを実行すると、「最後に成功したビルドを実行する」ことができ、ページ (他の場所の変更を含む) が期待どおりに実行されます。このコードは、Visual Studio Community 2015 Update 1 の Web サイト (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 class PropertyInfo、継承 System.Reflection.MemberInfo、System.Reflection のメンバー) を持っていますが、CustomAttributes プロパティを含むのは 2 つだけです。コンパイラが PropertyInfo の「間違った」インスタンスを見ていると思います...?
コードは機能するので、これはショーストッパーではありませんが、もちろん、コードをきれいにコンパイルして、このエラーの原因を理解したいと思っています。

4

0 に答える 0