只读接口,不需要抽象类中的主体
本文关键字:主体 抽象类 不需要 接口 只读 | 更新日期: 2023-09-27 18:30:39
我希望能够在实例化类中可写的接口中创建只读属性,但是如果继承通过抽象类,我会遇到问题:
interface IFoo {
string Foo { get; }
}
abstract class Bar : IFoo {
}
class Baz : Bar {
public string Foo { get; private set; }
}
这给了我一个错误Bar does not implement interface member IFoo.Foo
.有什么办法可以规避这一点吗?我希望最终实例化的类确定二传手的可见性。
你需要抽象地实现它:
abstract class Bar : IFoo
{
public abstract string Foo { get; }
}
但是,当您执行此操作时,您似乎无法选择覆盖 Baz 类中的可见性。
你能做的最好的事情是在派生类中使用支持字段:
class Baz : Bar
{
private string _foo;
public override string Foo
{
get { return _foo; }
}
}
这个关于重复问题的答案更详细地说明了原因。问题源于这样一个事实,即属性获取者和二传手是抽象的,而不是属性本身。