Eu fac un custom control similar cu un ItemsControl
deci are o Items
proprietatea vreau să fiu bindable dar, în scopul de control al meu de a actualiza, proprietatea trebuie să pună în aplicare INotifyCollectionChanged
. Aș vrea utilizatorul să fie capabil de a lega orice obiect atât timp cât implementează ambele INotifyCollectionChanged
și IList
.
În timp ce soluția simplă este de a crea o nouă interfață lista ca asa
public interface INotifyCollectionChangedAndList : INotifyCollectionChanged, IList { }
și avea nevoie să-l fi moștenit de la obiceiul lor de obiecte de colecție.
Cu toate acestea, în loc de a face aceasta, ei ar trebui să fie, de asemenea, capabil de a utiliza standard ObservableCollection<T>
la fel de bine care nu moștenească ambele INotifyCollectionChanged
și IList
dar nu moșteni INotifyCollectionChangedAndList
și nu pot să controlez asta. De asemenea, dacă ei folosesc o altă bibliotecă cu un tip care nu le pot controla, care nu pune în aplicare cele două interfețe acesta ar trebui să funcționeze în continuare.
Deci, întrebarea mea este dacă există o cale, ușor sau altfel (de exemplu, reflecție) în cazul în care nu pot specifica orice tip utilizate trebuie să pună în aplicare toate cerințele de două (sau mai multe) interfețe fără explicit SomeClass : INotifyCollectionChangedAndList
?
EDIT
Cred că răspunsul este nu. Așa că voi marca @benjamin răspundă cât mai corectă pentru că, deși s-ar putea să nu fie cea mai bună pentru controlul autori, acesta va fi, în alte cazuri, să fie cel mai apropiat lucru de ceea ce am, altfel, ar dori să realizeze.