Benzer bir özel denetim yapıyorum ItemsControl
yani bir var Items
özelliğine bağlanabilir olmasını istiyorum ama güncelleme için kontrol benim için özelliği uygulamalıdır INotifyCollectionChanged
. Kullanıcının her ikisini de uyguladığı sürece herhangi bir nesneyi bağlayabilmesini istiyorum INotifyCollectionChanged
ve IList
.
Basit çözüm, bunun gibi yeni bir arayüz listesi oluşturmaktır
public interface INotifyCollectionChangedAndList : INotifyCollectionChanged, IList { }
ve özel koleksiyon nesnelerinde devralınmasını gerektirir.
Bununla birlikte, bunu yapmak yerine standardı da kullanabilmelidirler ObservableCollection<T>
her ikisini de miras alan şey INotifyCollectionChanged
ve IList
ama miras almaz. INotifyCollectionChangedAndList
ve bunun üzerinde gerçekten kontrolüm yok. Aynı şekilde, iki arabirimi uygulayan kontrol edemedikleri bir türe sahip farklı bir kitaplık kullanırlarsa, yine de çalışması gerekir.
Bu yüzden sorum şu ki, kullanılan herhangi bir türü belirtebileceğim bir yol, kolay veya başka bir şekilde (yani yansıma), iki (veya daha fazla) arabirimin tüm gereksinimlerini açık olmadan uygulamalıdır SomeClass : INotifyCollectionChangedAndList
?
düzenlemek
Cevabın hayır olduğuna inanıyorum. Bu yüzden @ benjamin'in cevabını doğru olarak işaretleyeceğim çünkü kontrol yazarları için en iyisi olmasa da, diğer durumlarda başka türlü elde etmek istediğim şeye en yakın şey olacak.