如何使属性真正只读?
采用以下属性:
public string Foo
{
get;
private set;
}
使用反射,我仍然可以从所属类的外部设置该属性的值。有办法防止这种情况吗?删除 set 访问器不是一个选项,因为它必须是 WCF 友好的。
Take the following property:
public string Foo
{
get;
private set;
}
Using reflection, I can still set the value of this property from outside the owning class. Is there a way to prevent this? Removing the set accessor is not an option as it must be WCF friendly.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
乔恩·斯基特 说:
Jon Skeet says:
一个非常丑陋的解决方案是使用 StackTrace类来验证只有您自己的类中的方法才调用 setter。
A really ugly solution would be to use the StackTrace class to verify that only methods from your own class calls the setter.
您可以混淆代码。这样一来,就很难反思了。
You could obfuscate the code. This would make it hard to reflect on it.