C# 类的定义和继承问题 能解决的都是高手

发布于 2022-09-13 00:59:26 字数 1087 浏览 30 评论 0

//定义了一个A类(类名不确定,可能叫AA),不支持任何改动
public class A
{
    public int Id { get; set; }
    public string Name { get; set; }
}

//定义了一个接口
public interface IB
{
    public int Phone { get; set; }
    public string Email { get; set; }
}

//定义了一个B类,这是错误的例子
public class B<T> : T, IB where T : class
{
    public int Phone { get; set; }
    public string Email { get; set; }
    public List<string> Images { get; set; }
}

//如何实现C类,这是错误的例子
public class C : B<A>
{
    public string Detail { get; set; }
    public DateTime AddTime { get; set; }
    ...
}

//如何实现C类,这是错误的例子
public class C<A> : A, B
{
    public string Detail { get; set; }
    public DateTime AddTime { get; set; }
    ...
}

//问题条件:A类不支持任何改动(类名不确定),B类和接口(包括命名)随意改动,C类不实现任何接口,最终实现C类如下
public class C
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Phone { get; set; }
    public string Email { get; set; }
    public List<string> Images { get; set; }
    public string Detail { get; set; }
    public DateTime AddTime { get; set; }
    ...
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

如若梦似彩虹 2022-09-20 00:59:26

是想要Mixin的形式去组合出一个类型吧?
C#不是基于原型的语言,而且C#的类型是无法继承泛型参数的,所以想要达到属性Mixin的效果,基本是不可能的。

ref:Why can't I declare a type that derives from a generic type parameter?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文