リフレクションを使用して静的プロパティを取得する方法 質問する

リフレクションを使用して静的プロパティを取得する方法 質問する

これはかなり基本的なことのように思えますが、うまく動作しません。オブジェクトがあり、リフレクションを使用してそのパブリック プロパティにアクセスしています。これらのプロパティの 1 つは静的であり、アクセスできません。

Public Function GetProp(ByRef obj As Object, ByVal propName as String) as PropertyInfo
    Return obj.GetType.GetProperty(propName)
    
End Function

上記のコードは、これまで必要だったパブリック インスタンス プロパティでは正常に機能します。BindingFlags を使用して他の種類のプロパティ (プライベート、静的) を要求できるはずですが、適切な組み合わせが見つからないようです。

Public Function GetProp(ByRef obj As Object, ByVal propName as String) as PropertyInfo
    Return obj.GetType.GetProperty(propName, Reflection.BindingFlags.Static Or Reflection.BindingFlags.Instance Or Reflection.BindingFlags.Public)
    
End Function

しかし、それでも、静的メンバーを要求しても何も返されません。.NET リフレクタは静的プロパティを問題なく認識できるので、明らかに何かが欠けています。

ベストアンサー1

あるいは、これを見てください...

Type type = typeof(MyClass); // MyClass is static class with static properties
foreach (var p in type.GetProperties())
{
   var v = p.GetValue(null, null); // static classes cannot be instanced, so use null...
}

おすすめ記事