Вы также можете использовать общий интерфейс следующим образом:
public interface IGeneric{}
public interface IGeneric<T> : IGeneric{}
Тогда есть тип сейфа разрешение интерфейса:
container.RegisterType<IGeneric<ClassA>, ClassA>();
container.RegisterType<IGeneric<ClassB>, ClassB>();
ClassA classA = container.Resolve<IGeneric<ClassA>>();
ClassB classB = container.Resolve<IGeneric<ClassB>>();
Некоторые интересные вещи начинают происходить, когда вы идете по этой дороге ...