gpt4 book ai didi

c# - 接口(interface)实现覆盖另一个接口(interface)的类型

转载 作者:行者123 更新时间:2023-11-30 14:07:36 25 4
gpt4 key购买 nike

我有一个接口(interface) IArticle有几个实现:ProductType , RawMaterial , PaintType

然后我有一个我认为是 IArticle 之间的复合元素的引用 (SKU)和一个 Color :

public interface IReference
{
Color Color { get; set; }
IArticle Article { get; set; }
}

然后我有几个实现,每个都有对应的IArticle实现:

  • Product : IReference会有一个 ProductType作为Article ,
  • SemifinishedGood: IReference会有一个 RawMaterial作为Article
  • Paint : IReference会有一个 PaintType作为Article

所以问题是...我怎样才能覆盖 Article输入,像这样:

public class Paint: IReference
{
public virtual Color Color { get; set; }
public virtual PaintType Article { get; set; }
}

这样我就可以访问PaintType特定属性而不仅仅是 IArticle当我处理 Paint.Article 时不必每次都投?这种架构有什么问题?

最佳答案

Generic type parameters很容易解决这个问题。

public interface IReference<TArticle> where TArticle : IArticle
{
Color Color { get; set; }
TArticle Article { get; set; }
}

public class Paint : IReference<PaintType>
{
public virtual Color Color { get; set; }
public virtual PaintType Article { get; set; }
}

关于c# - 接口(interface)实现覆盖另一个接口(interface)的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39450826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com