Search code examples
c#genericspartial-classes

Using "partial" on a generic class


I am using a generic class called ViewModelCollection<BaseViewModel> which handles a lists of ViewModels and delivers standard add() and delete() commands.

Now I'm wondering if I can "extend" this class using the partial construct for a certain ViewModel, whose name is, say, CarViewModel.

Is something like this possible?

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

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

Solution

  • No, you can't, partial just splits the class definition over multiple files, the definition has to be the same. You need to derive from ViewModelCollection<T>:

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