gpt4 book ai didi

c# - 如何在 C# 中使用通用接口(interface)从子对象引用父对象?

转载 作者:太空狗 更新时间:2023-10-29 23:17:02 25 4
gpt4 key购买 nike

我有以下接口(interface)声明:

interface IOrder<T> where T: IOrderItem
{
IList<T> Items { get; set; }
}

interface IOrderItem
{
IOrder<IOrderItem> Parent { get; set; } // What do I put here?
}

我希望列表中的项目具有对 header 对象的引用,因此它可以使用 header 中的 ID 和其他字段。

在我的具体类中,它提示我没有正确实现“Parent”。

class StoreOrder : IOrder<StoreOrderItem>
{
public IList<StoreOrderItem> Items { get; set; }
}

class StoreOrderItem : IOrderItem
{
public StoreOrder Parent { get; set; } // This doesn't satisfy the interface
}

我尝试设置 IOrderItem作为IOrderItem<T>并传入 Parent 类型,但这会导致循环引用,因为 Header 类需要 Item 类类型……我很困惑。

关于如何正确实现这个的任何建议?

最佳答案

如果你这样定义你的接口(interface):

interface IOrder<T> where T : IOrderItem<T>
{
IList<T> Items { get; set; }
}
interface IOrderItem<T> where T : IOrderItem<T>
{
IOrder<T> Parent { get; set; }
}

然后您可以像这样实现它们以获得您期望的功能:

class StoreOrder : IOrder<StoreOrderItem>
{
public IList<StoreOrderItem> Items { get; set; }
}
class StoreOrderItem: IOrderItem<StoreOrderItem>
{
public IOrder<StoreOrderItem> Parent { get; set; }
}

关于c# - 如何在 C# 中使用通用接口(interface)从子对象引用父对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9725976/

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