С технической точки зрения это не «отдельный класс», поскольку Exposer<A>
отличается от Type
до Exposer<B>
;однако, в конечном счете, это не сильно отличается от большинства контейнеров IoC / DI ... если бы это было, скажем, StructureMap (чисто для примера), вы могли бы подумать:
container.GetInstance<A>().Do_A();
container.GetInstance<B>().Do_B();
вы бы,Конечно, необходимо настроить контейнер, чтобы знать, откуда поступают конкретные реализации A
и B
!Который для StructureMap показан здесь , но есть много вариантов для выбора .
Если вы имеете в виду непосредственно , то: нет.Вы не можете иметь:
class Exposer<T> : T {...} // non-working code to implement the interface T
Вы можете , однако, имеете некоторый класс:
class Exposer : A, B {...}
и просто разыгрываете:
A a = Exposer;
a.Do_A();
B b = Exposer;
b.Do_B();