C# 隐藏集合存取器
我有一个基类,FooBase。上面有一些标准的读/写属性。当我将其子类化时,我希望子类只具有读取属性。这可能吗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;} } 我知
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派生的类可用。这似乎为您的问题提供了答案
谢谢,你能给我举个例子说明我是如何做到这一点的吗?今天我有一个非常美丽的一天。。。