Ищете Уведомляемый (и общий c) Интерфейс Коллекции - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть мультиплатформенное приложение с MVVM. Интерфейсы ViewModel разделяются между технологиями. Проект, который содержит интерфейсные контракты, имеет вид точка. Net Стандарт v1.4 .

Ниже приведен пример контракта "MyViewModel":

    public interface IMyViewModel : IViewModel
    {
        string Name { get; set; }

        DateTime Birthday { get; set; }

        ICollection<Address> AddressList { get; }
    }

Моя проблема - найти хороший тип для изменяемых коллекций.

Конкретный тип для AddressList - ObservableCollection . Но я не хочу помещать этот тип в свойство "AddressList". Мне нужна абстракция, чтобы Платформа могла решить, какой конкретный тип необходим.

Конечно, я могу использовать ' INotifyCollectionChanged ' в качестве типа свойства, но затем я теряю безопасность типов (и добавляю, удаляю методы тоже отсутствуют).

Есть ли какой-либо соответствующий контракт в мире. net? Существует несколько концепций (см. Листинг ниже), но только IEnumerable является единственным контрактом, который соответствует им всем.

  • ObservableCollection
  • BindingList
  • ICollectionView

Вполне возможно, что в будущем мой продукт будет использовать платформу Blazor. Поэтому я хочу предотвратить трудное решение.

...