我如何保护财产不被覆盖

时间:2014-04-18 16:13:39

标签: c#

我有一个班级:

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

1 个答案:

答案 0 :(得分:2)

您可以在属性访问器上放置访问修饰符。

[JsonProperty]
public string ImportantStuff { get; private set; }
//                                    ^^^

如果您确实必须阻止Foo成员更改它,请使用private setter并将该属性移动到基类。但我将这个问题解释为你不希望班级的消费者能够设置它。

JsonProperty属性是必需的,因为JSON.net将默认使用非公共setter跳过属性。请参阅Private setters in Json.Nethttp://daniel.wertheim.se/2010/11/06/json-net-private-setters/

(当然,其他以完全权限运行的代码可以对你的对象内部做任何事情,如果正确的箍跳过的话)