Как сказать рефлексивно, если у атрибута есть открытый сеттер - PullRequest
5 голосов
/ 11 мая 2010

Я сохраняю объектную модель в XML, но когда я загружаю ее обратно, я получаю исключения при попытке использовать PropertyInfo.SetValue (), потому что свойство не имеет установщика, а только получателя.

Я хочу либо не сохранять свойства, которые имеют только геттеры, либо выяснить, загружен ли он для меня, допустимо ли попытаться установить значение или нет.

Кто-нибудь знает, как это сделать

Приветствия

Ответы [ 2 ]

10 голосов
/ 11 мая 2010

Вы можете использовать PropertyInfo.GetSetMethod - это вернет null, если либо свойство доступно только для чтения, либо установщик закрыт.

if (property.GetSetMethod() != null)
{
    // Yup, you can write to it.
}

Если вы можете справиться с закрытым сеттером, вы можете использовать:

if (property.GetSetMethod(true) != null)
{
    // Yup, there's a setter - but it may be private
}
2 голосов
/ 11 мая 2010

Использование PropertyInfo.CanWrite свойство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...