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

无法修改原有类时,如何访问C#泛型参数的Age属性?

问题:泛型方法无法识别无继承关系类的公共属性

我想创建一个带有泛型参数person的方法,person可以是Man或Woman类,但这两个类没有继承任何基类。Visual Studio提示T中没有Age的定义。

原始代码如下:

public class Man
{
    public string Name { get; set; } = "Man Name";
    public int? Age { get; set; }
}

public class Woman
{
    public string Name { get; set; } = "Woman Name";
    public int? Age { get; set; }
}

public class People
{
    public string Person<T>(T person)
    {
        return person.Age;
    };
}

我搜索后发现一些解决方案,似乎需要创建两个重载方法,但两者逻辑完全相同,有没有办法让Visual Studio知道T拥有Age属性?

补充:我无法修改Man和Woman类,只能编写People类。


可行解决方案

根据@Panagiotis Kanavos的建议,我尝试了以下代码并成功运行,现在可以将两个不同类的属性赋值给同一个变量_age,无需使用泛型即可用同一套逻辑处理,我会在实际项目中尝试此方案,非常感谢。

public class People
{
    public void Person(object person)
    {
        int? _age = 0;
        switch (person.GetType().ToString())
        {
            case "Man":
                var man = person as Man;
                _age = man?.Age;
                break;
            case "Woman":
                var woman = person as Woman;
                _age = woman?.Age;
                break;
        }
        Console.WriteLine(_age);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 04:26:02