首页 / C# / C#-为仅定义读取的接口实现读/写字段
C#-为仅定义读取的接口实现读/写字段
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#-为仅定义读取的接口实现读/写字段,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1264字,纯文字阅读大概需要2分钟。
内容图文
![C#-为仅定义读取的接口实现读/写字段](/upload/InfoBanner/zyjiaocheng/672/28e79eabe1d94406aaa8e84cbbfd7a16.jpg)
我有一个C#2.0应用程序,其中的基本接口允许对具体类中的值进行只读访问.但是,在具体的类中,我希望对该值具有读/写访问权限.所以,我有一个这样的实现:
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不能更改为接口,因为它也包含非抽象功能.我本来应该考虑在原始问题描述中添加一些内容.
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;
}
}
它不如我想要的好,但是可以.
解决方法:
有什么理由不使用抽象类上的接口?
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#-为仅定义读取的接口实现读/写字段全部内容,希望文章能够帮你解决C#-为仅定义读取的接口实现读/写字段所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。