我有一个班级:
public class Foo {
// here so serializer can materialize the class
public Foo(){
}
public Foo(string bar){
ImportantStuff = bar;
}
public string ImportantStuff { get; set;}
public string OtherBits{ get; set;}
public int eresting { get; set;}
}
如何保护除序列化程序(json.net / EF)以外的任何人设置的ImportantStuff
?
答案 0 :(得分:2)
您可以在属性访问器上放置访问修饰符。
[JsonProperty]
public string ImportantStuff { get; private set; }
// ^^^
如果您确实必须阻止Foo
成员更改它,请使用private
setter并将该属性移动到基类。但我将这个问题解释为你不希望班级的消费者能够设置它。
JsonProperty
属性是必需的,因为JSON.net将默认使用非公共setter跳过属性。请参阅Private setters in Json.Net和http://daniel.wertheim.se/2010/11/06/json-net-private-setters/
(当然,其他以完全权限运行的代码可以对你的对象内部做任何事情,如果正确的箍跳过的话)