首页 > 解决方案 > 在 INotifyPropertyChanged 对象中使用具有通用参数的抽象类

问题描述

我正在尝试将通用/抽象 DataSeries 附加到 INotifyPropertyChanged 对象。但是,TX、TY 泛型似乎阻止了我按预期使用它。谁能帮我吗?

有关抽象类的更多信息:https ://www.scichart.com/documentation/v5.x/webframe.html#SciChart.Charting~SciChart.Charting.Model.DataSeries.DataSeries%602.html

internal class DataSeriesAbstract : INotifyPropertyChanged
{
    public string dataName;
    public double lastAppendedTimestamp = 0.0f;

    public List<AbstractChartViewModel> subscribers;

    // gives an error that TX and TY cannot be found
    public DataSeries<TX, TY> realData;
    public DataSeries<TX, TY> Data
    {
        get { return realData; }
        set
        {
            realData = value;
            OnPropertyChanged(dataName);
        }
    }
...
}

谢谢你,
迈克

标签: c#genericscastingscichart

解决方案


您的班级也需要提供泛型。这会将您的类声明更改为如下:

internal class DataSeriesAbstract<TX, TY> : INotifyPropertyChanged where TX : IComparable where TY : IComparable

如果您这样做,where 约束将很重要,因为 DataSeries 具有相同的约束。

现在,如果您知道数据系列的具体类型,则可以使用它来代替 TX、TY。例如:

public DataSeries<double, double> realData;
public DataSeries<double, double> Data

推荐阅读