Как мне получить ссылку на тип, которая ссылается на любой объект, реализующий набор интерфейсов ?
Например, у меня может быть такой универсальный тип:
Java:
public class Foo<T extends A & B> { }
C #
public class Foo<T> where T : A, B { }
Вот как получить универсальный тип для всего класса. Однако я хотел бы просто иметь член данных, который ссылается на любой объект, расширяющий данный набор интерфейсов.
Пример:
public class Foo
{
protected <? extends A, B> object;
public void setObject(<? extends A, B> object)
{
this.object = object;
}
}
Если возможно иметь такой синтаксис типов, как я могу сделать это как на Java, так и на C #?
Я понимаю, что могу просто создать другой интерфейс, расширяющий все желаемые интерфейсы. Однако я не считаю это оптимальным, поскольку он без нужды добавляет еще один тип, единственная цель которого - обойти синтаксис. Конечно, это очень незначительная проблема, но с точки зрения элегантности это немного раздражает.