Csharp/C#教程:在C#中添加’set’到接口属性分享


在C#中添加’set’到接口属性

我希望通过为该接口中的属性提供set访问器来“扩展”接口。 界面看起来像这样:

interface IUser { string UserName { get; } } 

我想要这样的东西:

 interface IMutableUser : IUser { string UserName { get; set; } } 

我需要inheritance权。 我无法将IUser的主体复制到IMutableUser并添加set访问器。

这可能在C#中吗? 如果是这样,怎么办呢?

我没有看到你发布的内容不起作用的任何理由? 刚做了一个快速测试,它编译好了,但是发出了关于隐藏的警告。 这可以通过添加new关键字来修复,如下所示:

 public interface IMutableUser : IUser { new string Username { get; set; } } 

另一种方法是添加显式的set方法; 例如:

 public interface IMutableUser : IUser { void SetUsername(string value); } 

当然,我更喜欢使用setter,但如果不可能,我猜你会做你必须做的事情。

你可以使用一个抽象类:

 interface IUser { string UserName { get; } } abstract class MutableUser : IUser { public virtual string UserName { get; set; } } 

另一种可能性是:

 interface IUser { string UserName { get; } } interface IMutableUser { string UserName { get; set; } } class User : IUser, IMutableUser { public string UserName { get; set; } } 

您可以通过显式实现接口来“覆盖”接口中的属性。 克里斯的答案可能就是你所概述的场景所需要的所有内容,但考虑一个稍微复杂的场景,你需要在你的类上使用getter / setter,但界面只定义了getter。 您可以通过执行以下操作来解决此问题:

 public class MyUser : IUser { IUser.MyProperty { get { return "something"; } } public MyProperty { get; set; } } 

通过显式实现IUser.MyProperty ,您满足合同。 但是,通过提供公共MyProperty ,对象的API将永远不会显示显式接口版本,并且将始终将MyProperty与get / set一起使用。

上述就是C#学习教程:在C#中添加’set’到接口属性分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1018284.html

(0)
上一篇 2022年1月3日
下一篇 2022年1月3日

精彩推荐