采取以下财产:
public string Foo
{
get;
private set;
}
使用反射,我仍然可以在拥有类之外设置此属性的值。有办法防止这种情况吗?删除set访问器不是一个选项,因为它必须是WCF友好的。
答案 0 :(得分:5)
Jon Skeet says:
你不能(AFAIK)停止在某种情况下使用反射 来电者有“完全信任”。如果他们以低于完全信任的方式运行 然后一些关于反射的事情(如果不是全部的话)是自动的 我相信残疾,但是,如果这是为了阻止其他人 调用某些代码,您无法阻止他们使用运行代码 完全信任,除非你首先控制他们的盒子。
答案 1 :(得分:4)
一个非常难看的解决方案是使用StackTrace类来验证只有您自己的类中的方法才会调用setter。
答案 2 :(得分:2)
您可以对代码进行模糊处理。这将使其难以反思。