gpt4 book ai didi

c# - 当继承类型具有不同的类型参数时,声明泛型基类型的变量

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

我有一个类层次结构,它是这样的:

public abstract class BaseDecision 
{
// <implementation>
}

public class CCDecision : BaseDecision
{
// <implementation>
}

public class UCDecision : BaseDecision
{
// <implementation>
}

public abstract class BaseInfo<TDecision> where TDecision:BaseDecision, new()
{
public TDecision proposedDecision;
public TDecision finalDecision;
// <implementation>
}

public class CCInfo : BaseInfo<CCDecision>
{
// <implementation>
}

public class UCInfo : BaseInfo<UCDecision>
{
// <implementation>
}

问题是,对于这样的类层次结构,我无法声明一个变量,该变量可能同时包含 CCInfo 和 UCInfo 类的实例(因为它们使用具有不同类型参数的基类型)。据我了解-我也不能使用方差,因为我的通用参数既用于输入又用于输出。

我个人在这里感觉到某种反模式,但就是想不出如何解决这个问题。

最佳答案

您可以制作非泛型基类或接口(interface),或使用协变泛型接口(interface)(这要求属性是只读的)。

关于c# - 当继承类型具有不同的类型参数时,声明泛型基类型的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6047013/

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