Вы можете использовать GetSetMethod () , чтобы определить, является ли сеттер общедоступным или нет.
Например:
typeof(X).GetProperties(BindingFlags.SetProperty |
BindingFlags.Public |
BindingFlags.Instance)
.Where(prop => prop.GetSetMethod() != null)
.Select (x => x.Name).Dump();
GetSetMethod()
возвращает открытый метод установки метода, если его нет, он возвращает null
.
Поскольку свойство может иметь видимость, отличную от сеттера, его необходимо фильтровать по видимости метода сеттера.