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

C# 如何在泛型类中设置泛型类型,c#,generics,parameters,C#,Generics,Parameters,我有几节课 class Parameters{..} class CalculationParameters : Parameters{..} class CalculatorParameters<T> : Parameters where T:CalculationParameters{..} class FourierTransformParameters : CalculationParameters { public double FourierTransformC

我有几节课

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);
    }
}
类参数{..}
类计算参数:参数{..}
类CalculatorParameters:参数,其中T:CalculationParameters{..}
类:计算参数
{
公共双fourier变换系数{get;set;}
}
类计算{..}
类转换:计算{..}
类计算器,其中T:计算
{
公共计算器参数参数{get;private set;}
公共计算器(T计算,整数p1)
{
参数=新的计算器参数(calculation.Parameters,p1);
}
}
代替问号,我想做一些类似T.TRelatedCalculationParameters的事情, 因为在构建时,我知道T是什么,问号类型完全由T定义。这样我可以调用:

var ft         = new FourierTransform()
var calculator = new Calculator<FourierTransform>(ft,3);
calculator.Parameters.FourierTransformCoefficient = 3;
var ft=new fourier变换()
var计算器=新计算器(英尺,3);
calculator.Parameters.Fourier变换系数=3;
我想知道有什么办法可以做到这一点吗


谢谢,Jan

这里您将约束T为类型计算:

class Calculator<T> where T:Calculation
类计算器,其中T:计算
然后,您要执行以下操作:

类计算器,其中T:计算 { 公共计算器参数参数{get;private set;}

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

但您也有这样一个选项,它与类型CalculationParameters相反:

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


您不能将T同时约束到计算参数和计算参数,因为它们之间没有继承关系。

由于
计算
与其
参数
之间没有关系,您可能需要在
计算器
-cöass上使用两个通用参数。一个用于
计算
,另一个用于f或`参数: