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或`参数: