隐藏设置访问器

问题描述:

我有一个基类FooBase。它有几个标准的读/写属性。当我把这个子类化时,我希望子类只能读取属性。这可能吗?隐藏设置访问器

class FooBase 
{ 
    public virtual int ID{get; set;} 
    public virtual string Name{get;set;} 
} 

class Foo : FooBase 
{ 
    public override int ID {get;} 
    public override string Name{get;} 
} 

我知道,代码不工作,但它可能给你一些想法什么即时通讯后

谢谢!

不,你有你的班级扭曲了方向。

可写版本应该是只读版本的子类。这里是你可以做的一种方式:

class FooBase 
{ 
    public int ID { get; protected set; } 
    public string Name { get; protected set; } 
} 

class Foo : FooBase 
{ 
    public void SetId(int id) { /* ... */ } 
    public void SetString(string name) { /* ... */ } 
} 
+0

谢谢,你能给我一个我如何能做到这一点的例子吗?即时通讯今天有一个非常金发的日子... – TerrorAustralis 2010-09-23 06:15:27

你不能只删除一个公共成员那样,否则会破坏任何东西,试图把一个Foo的物体,像FooBase对象。

你可以尝试这样的事:

public virtual string Name{get; protected set;} 

使得二传手只适用于从FooBase派生类。