Наверное, простой вопрос.
У меня есть интерфейс (MyInterface), который определяет свойство следующим образом:
IList<IMenuItem> MenuCollection { get; }
А класс, реализующий MyInterface
public class MyClass : MyInterface
{
public ObservableCollection<MenuItemBase> MenuCollection
{
get
{
...
}
}
....
}
Из того, что я прочитал, ObservableCollection наследует коллекцию, которая является IList, и у меня есть класс MenuItemBase, который реализует IMenuItem - разве это не удовлетворит интерфейс?
Я полагаю, интерфейсы должны быть реализованы явно?
Я тоже пробовал это:
public class MyClass : MyInterface
{
public IList<IMenuItem> MenuCollection MenuCollection
{
get
{
if(_menuCollection == null)
_menuCollection = new ObservableCollection<MenuItemBase>();
return _menuCollection as IList<IMenuItem>;
}
}
private ObservableCollection<MenuItemBase> _menuCollection;
}
Похоже на обходной путь (и я столкнулся с несколькими проблемами, говоря, что MenuCollection не был создан), чтобы интерфейс был удовлетворен ... Есть ли лучший способ реализовать IInterface1<IInterface2>
объекты?
Причина, по которой я нуждаюсь в такого рода абстракции, заключается в том, что я создаю приложение призмы / единства и хочу максимально отделить модель представления меню от ленточного интерфейса, отображающего меню.