Я создаю пользовательский элемент управления, аналогичный ItemsControl
так что у него есть Items
свойство, к которому я хочу привязаться, но для обновления моего элемента управления это свойство должно быть реализовано INotifyCollectionChanged
. Я бы хотел, чтобы пользователь мог привязать любой объект, если он реализует оба INotifyCollectionChanged
и IList
.
В то время как простое решение состоит в том, чтобы создать новый список интерфейсов, например
public interface INotifyCollectionChangedAndList : INotifyCollectionChanged, IList { }
и требуют, чтобы он наследовался от их пользовательских объектов коллекции.
Однако вместо этого они также должны иметь возможность использовать стандарт ObservableCollection<T>
также, который наследует оба INotifyCollectionChanged
и IList
но это не наследует INotifyCollectionChangedAndList
и я действительно не могу это контролировать. Аналогично, если они используют другую библиотеку с типом, который они не могут контролировать, который реализует два интерфейса, он все равно должен работать.
Поэтому мой вопрос в том, есть ли способ, простой или иной (т. Е. Отражение), где я могу указать, что любой используемый тип должен реализовывать все требования двух (или более) интерфейсов без явного SomeClass : INotifyCollectionChangedAndList
?
Редактировать
Я верю, что ответ будет отрицательным. Поэтому я отмечу ответ @benjamin как правильный, потому что, хотя он может быть не лучшим для авторов контрольных работ, в других случаях он будет ближе всего к тому, чего я хотел бы достичь в противном случае.