这可能是一个简单的问题。
我有一个接口(MyInterface),它定义了一个属性,如下所示:
IList<IMenuItem> MenuCollection { get; }
实现MyInterface接口的类
public class MyClass : MyInterface
{
public ObservableCollection<MenuItemBase> MenuCollection
{
get
{
...
}
}
....
}
根据我所阅读的,ObservableCollection继承自Collection,而Collection是IList类型的。我有一个实现了IMenuItem接口的MenuItemBase类,这样是否就满足了接口要求呢?
我猜接口必须被显式地实现?
我也尝试过这个方法:
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;
}
看起来这是一个解决方法的hack(我遇到了一些问题,说MenuCollection没有实例化),以满足接口...是否有更好的方法来实现IInterface1<IInterface2>对象?
我需要这种抽象的原因是因为我正在构建一个prism / unity应用程序,并希望尽可能地将菜单视图模型与显示菜单的功能区UI分离。
_menuCollection
强制转换为IList<IMenuItem>
?如果ObservableCollection<MenuItemBase>
满足IList<IMenuItem>
,那么你应该可以直接返回它... 不是吗? - Dan Jas
语句将始终返回 null... - digEmAll