1

取以下属性:

public string Foo
{
   get;
   private set;
}

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

4

3 回答 3

5

乔恩斯基特

您不能(AFAIK)停止在调用者“完全信任”的情况下使用反射。如果他们在不完全信任的情况下运行,那么一些关于反射(如果不是全部)的事情会自动禁用,我相信 - 但是,如果这是为了阻止其他人调用某些代码,你不能阻止他们运行你的 除非您首先控制了他们的盒子,否则完全信任代码

于 2009-11-09T20:05:54.983 回答
4

一个非常丑陋的解决方案是使用StackTrace类来验证只有您自己的类中的方法才能调用 setter。

于 2009-11-09T20:11:32.703 回答
2

你可以混淆代码。这会让人很难反思。

于 2009-11-09T21:07:10.583 回答