C# 隐藏集合存取器

C# 隐藏集合存取器,c#,C#,我有一个基类,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;} } 我知

我有一个基类,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;}

使setter仅对从FooBase派生的类可用。

这似乎为您的问题提供了答案


谢谢,你能给我举个例子说明我是如何做到这一点的吗?今天我有一个非常美丽的一天。。。