Как и этот вопрос Java. Я хотел бы указать, что переменная реализует несколько интерфейсов. Например,
private {IFirstInterface, ISecondInterface} _foo;
public void SetFoo({IFirstInterface, ISecondInterface} value)
{
_foo = value;
}
Требования:
- У меня нет возможности добавить интерфейс для большинства типов, которые будут переданы в Foo. Поэтому я не могу создать третий интерфейс, который наследуется от IFirstInterface и ISecondInterface.
- Я хотел бы избежать создания содержательного класса, если это возможно, потому что тип Foo не имеет особого отношения к классу, и пользователь вряд ли узнает его во время компиляции.
- Мне нужно использовать foo для доступа к методам в обоих интерфейсах позднее.
- Я хотел бы сделать это безопасным способом компилятора, т.е. не пытаться применить к интерфейсу перед попыткой его использовать. Если foo не реализует оба интерфейса, довольно мало функциональности не будет работать должным образом.
Возможно ли это?
Изменить. Я хотел этого несколько раз по разным причинам. В этом случае это потому, что я меняю набор свойств из ObservableCollections на ReadOnlyObservableCollections. У меня есть вспомогательный класс, который создает проекцию из источника ObservableCollection в другую коллекцию. Поскольку ReadOnlyObservableCollection не наследуется от ObservableCollection, и мне нужны только операции в IList и INotifyCollectionChanged, я надеялся сохранить исходную коллекцию как комбинацию этих двух интерфейсов, а не требовать ObservableCollection.