c# - 将 'set' 添加到 C# 中的接口(interface)属性

标签 c# inheritance interface

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

interface IUser
{
    string UserName
    {
        get;
    }
}

我想要这样的东西:

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

我需要继承。我无法将 IUser 的主体复制到 IMutableUser 中并添加设置访问器。

这在 C# 中可行吗?如果可以,如何实现?

最佳答案

我看不出有任何理由说明您发布的内容不起作用?刚刚做了一个快速测试,它编译正常,但给出了关于隐藏的警告。这可以通过添加新关键字来解决,如下所示:

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

另一种方法是添加显式设置方法;例如:

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

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

关于c# - 将 'set' 添加到 C# 中的接口(interface)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/623824/

相关文章:

java - Type Erasure 抬头,如何规避?

c# - 使用 XML-RPC.NET 在参数中传递 CDATA

c# - 带有 Dapper 的 .net 核心的通用存储库模式

JPA 继承 : Query fails with unknown column

c++ - C++ 中的匿名内部类(Java 风格的监听器)

java - 处理子类中不需要的参数? (java)

c# - 在 ASP.Net 应用程序中使用 Task.WhenAny() 的性能影响

c# - 将结构更改为密封类时隐式转换失败

二级层次类 : do not understand why it does not work 中的 C++ 多态性

java - 继承有界类型参数以限制类型