Переопределяющий метод в Коллекции Расширения Класса с Универсальным C # - PullRequest
0 голосов
/ 04 декабря 2018

Я делаю некоторые курсовые работы и не могу понять, как переопределить метод после выхода из класса.Я пытаюсь переопределить его с помощью ключевого слова new, но базовый метод все еще вызывается.

public class TrainList : ObservableCollection<Train>
{
    ...

    public new void Add(Train train)
    {
        Console.WriteLine("Contains ID: " + ContainsId(train.Id).ToString());
        if (!ContainsId(train.Id)) base.Add(train);
    }

    ...
}

ViewModel:

public class AddTrain
{
    // Possible values for selectable items
    public ObservableCollection<Station> Stations => Facades.StationList.Instance;
    public ObservableCollection<Train> Trains => Facades.TrainList.Instance;
    public void InsertTrain()
    {
        ....
        Train newTrain = trainBuilder.build();
        Console.WriteLine("Created an object");
        Trains.Add(newTrain);
    }
}

Как можно переопределить метод из расширенного класса, когда естьтакое дженерики в c #?

1 Ответ

0 голосов
/ 04 декабря 2018

Изменение

public ObservableCollection<Train> Trains => Facades.TrainList.Instance;

на

public Facades.TrainList Trains => Facades.TrainList.Instance;

решает проблему.


Проблема в том, что ViewModel приводит объект к ObservableCollection.Поэтому новый метод не вызывается.

Ссылка: Новые и новые ключевые слова переопределения (Спасибо @John)

...