繁体   English   中英

如何在泛型类中设置泛型类型

[英]How do I set a generic type inside a generic class

我有几节课

class Parameters{..}
class CalculationParameters : Parameters{..}
class CalculatorParameters<T> : Parameters where T:CalculationParameters{..}

class FourierTransformParameters : CalculationParameters
{
    public double FourierTransformCoefficient{ get; set; }
}

class Calculation{..}
class FourierTransform : Calculation{..}

class Calculator<T> where T:Calculation
{
    public CalculatorParameters<?> Parameters{ get; private set; }

    public Calculator(T calculation,int p1)
    {
        Parameters = new CalculatorParameters<?>(calculation.Parameters,p1);
    }
}

代替问号,我想做一些类似 T.TRelatedCalculationParameters 的事情,因为在构造的时候,我知道 T 是什么,问号类型完全由 T 定义。这样我可以调用:

var ft         = new FourierTransform()
var calculator = new Calculator<FourierTransform>(ft,3);
calculator.Parameters.FourierTransformCoefficient = 3;

我有办法以某种方式实现这一目标吗?

谢谢,简

在这里,您将 T 限制为类型 Calculation:

class Calculator<T> where T:Calculation

然后你想做:

类计算器其中 T:Calculation { public CalculatorParameters Parameters{ get; 私人订制; }

在这两种情况下,T 都被限制为类型 Calculation。

但是你也有这个,它限制 T 输入 CalculationParameters:

类 CalculatorParameters : 参数,其中 T:CalculationParameters{..}

您不能将 T 限制为 Calculation 和 CalculationParameters,因为它们之间没有继承关系。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM