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

.NET Framework 4.8 接口层级结构及接口合并问题

.NET Framework 4.8 接口层级结构及接口合并问题

嘿,这个场景太常见了,咱们来捋捋怎么优雅解决~

首先,既然每个带Texture的类都必然有Name,那用接口继承是最适合的方案——既不破坏你原来依赖泛型约束的代码,又能实现属性的复用和接口的层级化。

推荐方案:接口继承

让ClassTexture继承ClassType,这样实现ClassTexture的类会自动要求实现name属性,完美匹配你的业务逻辑:

internal interface ClassType
{
    string Name { get; set; } // 小提示:C#里建议用帕斯卡命名法(PascalCase),更符合规范哦
}

internal interface ClassTexture : ClassType
{
    string Texture { get; set; }
}

这样做的好处:

  • 所有实现ClassTexture的类必须同时实现Name和Texture,满足你“有Texture就有Name”的要求
  • 原来的泛型约束Where T : ClassType依然可以用在只需要Name属性的场景
  • 新的泛型约束Where T : ClassTexture可以用在同时需要Name和Texture的场景
  • 完全兼容你之前的代码,不需要大规模修改

备选方案:直接合并接口(谨慎使用)

如果你确定以后不需要单独使用ClassType接口,也可以直接把两个接口合并成一个,但这会影响原来依赖ClassType的泛型代码,所以除非你已经做好了全量替换的准备,否则不推荐:

internal interface IClassWithNameAndTexture
{
    string Name { get; set; }
    string Texture { get; set; }
}

另外额外提一句:这种接口继承的方式也符合面向对象的接口隔离原则——把通用的属性(比如Name)放在基础接口,更具体的属性(比如Texture)放在继承的接口里,后续如果有其他需要Name属性的接口,也可以继续继承ClassType,结构会非常清晰。

备注:内容来源于stack exchange,提问作者Filipe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 08:24:06