所以我有一个名为 VariableSeries 的通用类,一个从它派生的名为 Indicator 的抽象类,然后是实现该抽象类的各种类(我们称它们为指标)。我想要一个指标列表并能够使用它。
public class VariableSeries<T>
{
protected List<T> Series;
public int CurrentBar { get; private set; }
public T this[int index]
{
get
{
if (index > CurrentBar)
throw new Exception("Tried to look too far in the past, data does not exist.");
return Series[CurrentBar - index];
}
}
...
}
我有一个从 VariableSeries 派生的指标类:
public abstract class Indicator<T> : VariableSeries<T>
{
...
}
现在我想要一个各种类型的指标列表。我的第一个想法是只声明一个列表,但这并没有真正起作用。而且我不能只是向它抛出一个接口并强制转换为它,因为我需要使用索引,它利用了泛型类型。
因此,假设我有以下指标(众多指标之一):
public class MovingAverage<T> : Indicator<double>
{
...
}
有没有办法做到以下几点:
List<???> Indicators = new List<???>();
Indicators.Add(new MovingAverage<type is provided dynamically>());
do stuff with Indicators[0][0];
也许某种无需指定类型即可转换为泛型类的方式,例如 ((VariableSeries<>)Indicators[0])[0]?