Использование «частичного» в обобщенном классе - PullRequest
4 голосов
/ 17 апреля 2011

Эй, ребята,
Я использую универсальный класс с именем ViewModelCollection<BaseViewModel>, который обрабатывает списки ViewModels и предоставляет стандартные команды add() и delete().

Теперь мне интересно, смогу ли я «расширить» этот класс, используя конструкцию partial для определенной ViewModel, чье имя, скажем, CarViewModel.

Возможно ли что-то подобное?

partial class ViewModelCollection<BaseViewModel>
{
    ... some command and list stuff ...
}

partial class ViewModelCollection<CarViewModel>
{
    ... special commands for car view model
}

Ответы [ 3 ]

10 голосов
/ 17 апреля 2011

Нет, вы не можете, partial просто разделяет определение класса на несколько файлов, определение должно быть одинаковым.Вам необходимо извлечь из ViewModelCollection<T>:

public class ViewModelCollection<T> where T: BaseViewModel
{
   //methods
}

public class CarViewModelCollection : ViewModelCollection<CarVieModel>
{
  //specific methods
}
1 голос
/ 17 апреля 2011

Возьмите добавленные частичные методы и создайте интерфейс, затем вы можете ограничить использование общего интерфейса этим интерфейсом и отработать из тех методов, которые определены.

1 голос
/ 17 апреля 2011

partial используется только для разделения класса на несколько исходных файлов. Само определение класса должно быть таким же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...