Как вы делаете собственность действительно только для чтения? - PullRequest
1 голос
/ 09 ноября 2009

Возьмите следующее свойство:

public string Foo
{
   get;
   private set;
}

Используя отражение, я все еще могу установить значение этого свойства вне класса-владельца. Есть ли способ предотвратить это? Удаление установленного аксессора не вариант, так как он должен быть дружественным к WCF.

Ответы [ 3 ]

5 голосов
/ 09 ноября 2009

Джон Скит говорит :

Вы не можете (AFAIK) прекратить использование отражения в ситуации, когда вызывающий абонент имеет «полное доверие». Если они работают с менее чем полным доверием тогда некоторые вещи об отражении (если не все) автоматически Я считаю, что инвалидам, если это мешает другим людям вызывая некоторый код, вы не можете помешать им запустить ваш код с помощью полное доверие, если только вы не контролируете их ящик.

4 голосов
/ 09 ноября 2009

Действительно уродливым решением было бы использовать класс StackTrace , чтобы проверить, что только методы из вашего собственного класса вызывают установщик.

2 голосов
/ 10 ноября 2009

Вы можете запутать код. Это затруднит размышления об этом.

...