Допустим, следующие классы:
public interface ITabViewModel<T> {}
public class FooTabViewModel : ITabViewModel<FooTabViewModel> {}
public class BarTabViewModel : ITabViewModel<BarTabViewModel> {}
public class MainWindowViewModel
{
private readonly ObservableCollection<?> _tabs;
public MainWindowViewModel(
ITabViewModel<FooTabViewModel> fooTabViewModel
ITabViewModel<BarTabViewModel> barTabViewModel)
{
}
public ObservableCollection<?> Tabs
{
get { return _tabs; }
}
}
MainWindowViewModel
содержит список вкладок (например, рабочих пространств), которые будут привязаны к представлению и отображены с XAML.
Проблема, с которой я столкнулся, заключается в том, что я не знаю, какой универсальный тип дать ObservableCollection
. Я мог бы дать ему тип объекта, но мне не очень нравится эта идея. Я понимаю, что могу создавать IFooTabViewModel
и IBarTabViewModel
, однако, кажется, имеет смысл создавать один универсальный интерфейс, который может использовать каждый TabViewModel
.
Может быть, есть другой дизайн, на который я должен обратить внимание?