vdhant - Контейнеры не предназначены для использования.
Вы хотите использовать ISubject, верно? Затем, если вы передали T, вы нарушаете свою абстракцию, потому что ваш вызывающий абонент должен знать, что ISubject на самом деле является субъектом, и более того, это Subject<T> и что для него требуется конкретное T.
Ни один контейнер этого не позволит, но это проблема дизайна, а не инструмента.
Одна вещь, чтобы исправить ваш дизайн, это сделать его явным - изменить ISubject на ISubject<T>
Затем вы можете зарегистрировать открытый универсальный тип ISubject<> и привязать его к открытому универсальному типу Subject<>.
container.Register(Component.For(typeof(ISubject<>))
.ImplementedBy(typeof(Subject<>)));
Тогда вы сможете сделать
var fooSubject = container.Resolve<ISubject<Foo>>();
Вы не предоставили никакого контекста, поэтому я могу ошибаться с ответом, но одно можно сказать наверняка - у вас проблема с дизайном.
person
Krzysztof Kozmic
schedule
16.05.2009