В вашем вопросе неясно, нужно ли сопоставлять открытый универсальный интерфейс IFoo<T,U>
с одной или несколькими реализациями, каждая из которых реализует закрытую версию этого интерфейса (регистрация пакета), или вы хотите сопоставить открытый универсальный интерфейс соткрытая универсальная реализация.
Danyolgiax привел пример регистрации партии.Сопоставление открытого универсального интерфейса с открытой универсальной реализацией дает возможность запрашивать закрытую версию этого интерфейса и возвращать закрытую версию указанной реализации.Регистрация для сопоставления открытого универсального типа обычно выглядит следующим образом:
container.Register(Component
.For(typeof(IFoo<,>))
.ImplementedBy(typeof(Foo<,>)));
Вы можете решить это следующим образом:
var foo1 = container.Resolve<IFoo<int, double>>();
object foo2 = container.Resolve(typeof(IFoo<string, object>));
Как видите, вы можете разрешить любой закрытыйверсия открытого универсального интерфейса.