Извините, это в Java, но вы можете сделать что-то вроде этого:
interface Alpha
{
}
class Beta implements Alpha
{
}
class Foo<T>
{
}
class Program
{
static void main(string[] args)
{
Foo<Beta> fooBeta = new Foo<Beta>();
Foo<? implements Alpha> fooAlpha = fooBeta;
}
}
Это не решает проблему полностью, но вы получаете, по крайней мере, доступ ко всем методам Alpha, не зная о Beta ...