gpt4 book ai didi

c# - 列表中的协方差

转载 作者:太空狗 更新时间:2023-10-30 00:02:45 24 4
gpt4 key购买 nike

我们如何正确设计以下模型?我有两个类(class)图书馆。库 2 引用了库 1。但是库 1 没有引用了库 2。

图书馆 1:

public class BaseData
{
/*Some Properties*/
}

public class BaseGroup
{
/*Some data*/
public List<BaseData> DataList;
}

图书馆 2:

public class ChildData : BaseData
{
/*Some more data*/
}

public class ChildGroup
{
/*Some more data*/
public List<ChildData> DataList;
}

我怎样才能设计这些模型,以便我有一个列表。该列表可以在库 1 中启动,然后在库 2 中更新。同样从库 2,我需要将 ChildGroup 对象传递给库 1 方法,该方法将 BaseGroup 作为争论。

最佳答案

你不能制作List<T>协变 - 它是不变的,对此你无能为力。你不能对待 List<Apple>作为List<Fruit>因为你不能调用list.Add(new Orange())例如,在上面。

在我看来,你应该制作你的 baseGroup类泛型,有约束。然后你可以制作childGroup从中得出:

因此 - 已修复类名称以遵循 .NET 命名约定:

public class BaseData {}

public class BaseGroup<T> where T : BaseData
{
public List<T> DataList;
}

public class ChildData : BaseData {}

public class ChildGroup : BaseGroup<ChildData>
{
// No need for a separate list here
}

关于c# - 列表中的协方差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32586538/

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