Использование класса Abstract с общими параметрами в объекте INotifyPropertyChanged - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь присоединить универсальный / абстрактный 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);
        }
    }
...
}

Спасибо,
Mike

Ответы [ 2 ]

3 голосов
/ 09 апреля 2019

Ваш класс должен будет также предоставить генерики. Это изменит ваше объявление класса следующим образом:

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
0 голосов
/ 09 апреля 2019

Как минимум, вам нужно будет добавить их как общие параметры класса, а также любые ограничения

internal class DataSeriesAbstract<TX, TY>: INotifyPropertyChanged
{
   ...

Дополнительные ресурсы

Общие классы (Руководство по программированию в C #)

...