this Java question ile benzer şekilde. Bir değişkenin birden çok arabirimi uyguladığını belirtmek isterim. Mesela.Net'te birden çok arabirimi uygulayan bir değişken bildirmenin bir yolu var mı?
içinprivate {IFirstInterface, ISecondInterface} _foo;
public void SetFoo({IFirstInterface, ISecondInterface} value)
{
_foo = value;
}
Gereksinimler:
- Ben Foo geçirilen olacağını en tipine bir arabirim ekleme olanağı yoktur. Bu yüzden IFirstInterface ve ISecondInterface'den gelen üçüncü bir arabirim oluşturamıyorum.
- Mümkünse sınıf sınıfını jenerik yapmaktan kaçınmak isterim çünkü Foo'nun türü sınıfla çok ilgili değildir ve kullanıcı derleme zamanında bunu bilmez.
- Daha sonra her iki arabirimdeki yöntemlere erişmek için foo kullanmam gerekir.
- Bunu bir derleyici güvenli bir şekilde yapmak istiyorum, yani kullanmaya çalışmadan hemen önce arabirime yayınlamaya çalışıyorum. Eğer foo her iki arabirimi de uygulamazsa, oldukça fazla işlevsellik düzgün çalışmayacaktır.
Bu mümkün mü?
Edit: Bunu çeşitli nedenlerden dolayı birkaç kez istemiştim. Bu durumda, bir özellik kümesini ObservableCollections - ReadOnlyObservableCollections olarak değiştirdiğim için. ObservableCollection kaynağından başka bir Koleksiyona bir projeksiyon oluşturan bir yardımcı sınıfım var. ReadOnlyObservableCollection, ObservableCollection öğesinden devralmadığı için ve yalnızca IList ve INotifyCollectionChanged'de işlemlere ihtiyacım olduğundan, kaynak koleksiyonumu bir ObservableCollection gerektirmek yerine bu iki arabirimin bir bileşimi olarak kaydetmeyi umuyordum.
Şansın bulunmaktadır. – ChaosPandion
Kısa cevap: hayır. IFirstInterface ve ISecondInterface'den gelen üçüncü bir arabirimi tanımlamadan değil. – Anthony
Tek düşüncem, aynı örneği iki arayüz değişkenine sahip olabilir miydiniz? Hangi durumda buna ihtiyacınız var? Böyle bir şeye ihtiyacın olduğu yerde ne yaptığına dair biraz bilgi verebilir misin? –