Как получить ссылку на тип, которая относится к любому объекту, который реализует набор интерфейсов?
Например, у меня может быть общий тип, подобный этому:
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 #?
Я понимаю, что могу просто создать другой интерфейс, который расширяет все желаемые интерфейсы. Однако я не считаю это оптимальным, поскольку в нем нет необходимости добавлять другой тип, единственная цель которого - обойти синтаксис. Конечно, это очень незначительная проблема, но с точки зрения элегантности это немного раздражает.