You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#接口属性与默认实现问题:实现类无法访问默认属性

接口默认实现属性无法在实现类中直接访问的原因及解决办法

问题原因

C# 8.0新增的接口默认实现成员,不会被实现类隐式继承。接口里的DefinedProperty是属于接口IBase本身的成员,而非实现类Class的成员。所以在类的方法里直接调用DefinedProperty,编译器会找不到这个成员,触发编译错误。

解决办法

方法1:通过接口类型访问

把当前实例强制转换为接口类型,再访问默认实现的属性:

class Class : IBase
{
    public int Integer { get; set; }

    public void Foo()
    {
        Console.WriteLine(((IBase)this).DefinedProperty); // 正常访问
    }
}

方法2:在实现类中显式转发该属性

在类里定义同名属性,直接转发接口的默认实现;如果需要自定义逻辑,也可以在这里重写覆盖接口的默认实现:

class Class : IBase
{
    public int Integer { get; set; }

    public string DefinedProperty => ((IBase)this).DefinedProperty;

    public void Foo()
    {
        Console.WriteLine(DefinedProperty); // 正常访问
    }
}

内容的提问来源于stack exchange,提问作者Aik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 20:05:06