你如何让房产真正只读?

Phi*_*ace 1 c# reflection properties readonly

选择以下房产:

public string Foo
{
   get;
   private set;
}
Run Code Online (Sandbox Code Playgroud)

使用反射,我仍然可以在拥有类之外设置此属性的值.有办法防止这种情况吗?删除set访问器不是一个选项,因为它必须是WCF友好的.

dtb*_*dtb 5

Jon Skeet :

您不能(AFAIK)在呼叫者具有"完全信任"的情况下停止使用反射.如果他们以低于完全信任的方式运行,那么关于反射的一些事情(如果不是全部)会被自动禁用,我相信 - 但是,如果这是为了阻止其他人调用某些代码,则无法阻止他们运行你的 完全信任的代码,除非你首先控制他们的盒子.