У меня есть мультиплатформенное приложение с 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. Поэтому я хочу предотвратить трудное решение.