[英]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.