В C #, как я могу определить, является ли свойство статичным? (.Net CF 2.0) - PullRequest
26 голосов
/ 24 декабря 2008

FieldInfo имеет член IsStatic, а PropertyInfo - нет. Я предполагаю, что я просто пропускаю то, что мне нужно.

Type type = someObject.GetType();

foreach (PropertyInfo pi in type.GetProperties())
{
   // umm... Not sure how to tell if this property is static
}

Ответы [ 4 ]

39 голосов
/ 24 декабря 2008

Чтобы определить, является ли свойство статическим, необходимо получить MethodInfo для метода доступа get или set, вызвав метод GetGetMethod или GetSetMethod, и проверить его свойство IsStatic.

http://msdn.microsoft.com/en-us/library/system.reflection.propertyinfo.aspx

10 голосов
/ 24 декабря 2008

Почему бы не использовать

type.GetProperties(BindingFlags.Static)
5 голосов
/ 20 июля 2018

Лучшее решение

public static class PropertyInfoExtensions
{
    public static bool IsStatic(this PropertyInfo source, bool nonPublic = false) 
        => source.GetAccessors(nonPublic).Any(x => x.IsStatic);
}

Использование:

property.IsStatic()
5 голосов
/ 03 августа 2017

В качестве быстрого и простого решения поставленного вопроса вы можете использовать это:

propertyInfo.GetAccessors(true)[0].IsStatic;
...