При работе с интерфейсами я часто сталкиваюсь со случаем, когда я хочу убедиться, что возвращаемое значение из свойства или метода, или иногда параметра метода, реализует ДВА или более интерфейсов без создания нового интерфейса.
Мой конкретный пример сейчас заключается в том, что я хочу указать, что метод приведет к IEnumerable<SomeType>
, который также поддерживает INotifyCollectionChanged
- таким образом, другому объекту, использующему интерфейс, не нужно типизировать и все же иметь доступ к обоим параметрам,(Я не хочу использовать ReadOnlyObservableCollection
явно, потому что он хорошо работает только с ObservableCollection
объектами, но я также хотел бы оставить параметр открытым для будущих разработчиков интерфейса, чтобы использовать его, если они захотят.)
Я думаю, что это можно сделать только с параметрами метода, а не с возвращаемыми значениями, предоставив объявление метода следующим образом:
void SetStringData<T>(T data) where T : IEnumerable<string>, INotifyCollectionChanged
Просто чтобы было ясно, что ядействительно нравится то, где класс использования не может указать точный тип возвращаемого значения.Похоже на следующее, но, очевидно, синтаксис не работает или даже не имеет смысла.
(IEnumerable<string>, INotifyCollectionChanged) GetStringData()
Есть предложения, как мне это сделать?Или, если это не удастся, как я смогу добиться таких же результатов?