gpt4 book ai didi

c# - 为只定义读的接口(interface)实现读/写字段

转载 作者:行者123 更新时间:2023-11-30 15:46:02 25 4
gpt4 key购买 nike

我有一个 C# 2.0 应用程序,其中的基接口(interface)允许对具体类中的值进行只读访问。但是,在具体类中,我希望对该值具有读/写访问权限。所以,我有一个这样的实现:

public abstract class Base
{
public abstract DateTime StartTime { get; }
}

public class Foo : Base
{
DateTime start_time_;

public override DateTime StartTime
{
get { return start_time_; }
internal set { start_time_ = value; }
}
}

但是,这给了我错误:

Foo.cs(200,22): error CS0546: 'Foo.StartTime.set': cannot override because 'Base.StartTime' does not have an overridable set accessor

我不希望基类有写权限。但是,我确实希望具体类提供读/写访问权限。有什么办法可以做到这一点吗?

谢谢,保罗H


不幸的是,Base 不能更改为接口(interface),因为它也包含非抽象功能。我本应考虑将某些内容放入原始问题描述中。

public abstract class Base
{
public abstract DateTime StartTime { get; }

public void Buzz()
{
// do something interesting...
}
}

我的解决方案是这样做:

public class Foo : Base
{
DateTime start_time_;

public override DateTime StartTime
{
get { return start_time_; }
}

internal void SetStartTime
{
start_time_ = value;
}
}

虽然没有我想要的那么好,但它确实有效。

最佳答案

有什么理由不在抽象类上使用接口(interface)?

    public interface Base
{
DateTime StartTime { get; }
}

public class Foo : Base
{
DateTime start_time_;

public DateTime StartTime
{
get { return start_time_; }
internal set { start_time_ = value; }
}
}

关于c# - 为只定义读的接口(interface)实现读/写字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4619829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com