隐藏设置访问器
问题描述:
我有一个基类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) { /* ... */ }
}
答
你不能只删除一个公共成员那样,否则会破坏任何东西,试图把一个Foo的物体,像FooBase对象。
你可以尝试这样的事:
public virtual string Name{get; protected set;}
使得二传手只适用于从FooBase派生类。
谢谢,你能给我一个我如何能做到这一点的例子吗?即时通讯今天有一个非常金发的日子... – TerrorAustralis 2010-09-23 06:15:27