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

如何通过嵌套对象实现接口且无需逐个映射成员?一行代码实现接口映射

用嵌套对象一键实现接口,避免手动映射成员

在C#中,你可以通过显式实现接口并返回嵌套对象的方式,一次性将整个接口的实现委托给嵌套实例,无需手动逐个映射接口成员。

修改后的代码

把你示例中Builder类里的两行手动映射代码,替换成一行显式接口实现即可:

public interface IIndexer 
{
    int A { get; }
    void B(int value);
}

public interface IBuilder : IIndexer
{
    int Q { get; }
}

public class Indexer: IIndexer
{
    public int A { get; set; }
    public void B(int value) { /* 你的实现逻辑 */ }
}

public class Builder : IBuilder
{
    // 实现IBuilder自身声明的成员
    public int Q { get; set; }  

    // 实现IIndexer的嵌套对象
    private Indexer Index = new Indexer();  
    
    // 一行代码完成整个IIndexer接口的委托
    IIndexer IBuilder => Index;
}

原理说明

当你显式实现IBuilder接口并返回嵌套的Index对象时,.NET运行时会自动将IIndexer接口的所有成员调用转发到Index实例上。因为IBuilder继承自IIndexer,所以这个实现会覆盖整个父接口的所有成员需求,省去了逐个编写映射代码的麻烦。

注意事项

  • 嵌套的Indexer类必须完整实现目标接口(这里Indexer已经实现了IIndexer),否则会编译报错。
  • 这种方式属于显式接口实现,只有当Builder实例被转换为IIndexer或IBuilder接口类型时,才会使用该委托实现;直接使用Builder具体实例无法访问IIndexer的成员(如果需要直接访问,可以将Index设为public,但通常建议保持私有,通过接口规范访问)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 06:33:13