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

能否定义继承泛型类型T的MyResult<T>类并添加Capitalized属性?

泛型继承任意类型T的实现问题

原始类定义

public class MyClass
{
    public string FullName { get; set; }
}

现有API返回的MyResult类

API客户端返回的MyResult类继承自MyClass,并包含一个Capitalized属性,该属性指向所有字符串属性已转为大写的MyClass实例:

public class MyResult : MyClass
{
    public MyClass Capitalized { get; set; }
}

使用示例:

MyResult result = /* 调用API获取实例 */
Console.WriteLine(result.FullName);
Console.WriteLine(result.Capitalized.FullName);

期望的泛型版本

希望定义泛型版本MyResult<T>,使其继承任意类型T并包含T类型的Capitalized属性,期望结构如下:

public class MyResult<T> : T
{
    public T Capitalized { get; set; }
}

该实现不可行的原因

C#不允许泛型类直接继承类型参数T,核心原因包括:

  • 若T是密封类,密封类本身禁止被继承,写法会直接编译报错;
  • 若T是值类型(如int、DateTime等),值类型无法被继承,同样会触发编译错误;
  • 编译器无法提前确定T的继承结构,这会破坏C#类型系统的确定性,引发潜在运行时问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:18:35