2015-04-20 2 views
1

У меня есть интерфейс, с которым реализуется моя модель и viewmodel. У меня есть свойство списка в интерфейсе, модель которого реализуется как список, но по некоторым причинам мне нужно использовать наблюдаемую коллекцию в модели вида. могу ли я реализовать такое же свойство с использованием наблюдаемой коллекции. Вот мой пример кода,Как избежать избыточного свойства для модели просмотра

public class MyObject 
{ 
    public string Property1 { get; set; } 
    public string Property1 { get; set; } 
} 

public interface IFoo 
{ 
    List<MyObject> MyList { get; set; } 
} 


public class Model : IFoo 
{ 
    private List<MyObject> mMyList; 

    public List<MyObject> MyList 
    { 
     get { return mMyList; } 
     set { mMyList = value; } 
    } 
} 

public class ViewModel : IFoo 
{ 

    // I want 
    //ObservableCollection<string> Mylist 
    //for view purpose,How can I use the same property from interface 


} 
+0

Вы рассматривали 'CollectionView' как альтернативу' ObservableCollection'? Почему модель не реализует ObservableCollection? – Default

+1

Как насчет изменения 'IFoo.MyList' на' ICollection 'вместо (т. Е. Контракта) и оставить реализацию разработчикам? – Default

ответ

1

Остановить быть столь требовательным. В ваших интерфейсах я имею в виду.

public interface IFoo 
{ 
    IList<MyObject> MyList { get; set; } 
} 

И использовать OC за кулисами

ObservableCollection реализует IList, так что вы можете легко

public class Bar : IFoo 
{ 
    public IList<MyObject> MyList {get; private set;} 
    public Bar() 
    { 
     MyList = new ObservableCollection<MyObject>(); 
    //snip 

Оковы будет знать наш секрет, и действовать соответствующим образом.

+0

Ошибка, которую Bar не реализует MyList, правильный тип должен быть Generic.IList – TRS

+0

@TRS нет, это не так. Если вы вставляете фактическую ошибку, я мог бы выправить вас ... – Will

+0

NVM. Здесь мы будем называть это IList, но на самом деле это будет OC (и будем вести себя так, как ожидалось). – Will

Смежные вопросы