Я относительно новичок в инъекции зависимостей. Я думаю, что у меня есть идея, но теперь я получаю эту проблему. Предположим, что у меня есть несколько интерфейсов и несколько классов:Вложенные дженерики и инъекции зависимостей C#
interface IA<T>
interface IB<IA<T>>
class A<T> : IA<T>
class B<IA<T>> : IB<IA<T>>
Я хочу зарегистрировать следующее в моей инъекции зависимостей контейнера:
container.Register<IB<IA<T>>, B<A<T>>(...);
Когда я пытаюсь решить IB<IA<T>>
, он терпит неудачу с исключением пояснив, что IB<IA<T>>
не может быть преобразован в B<A<T>>
.
Почему это не удалось, и как я могу его исправить?
Этот http: // stackov erflow.com/questions/26997923/non-generic-implementations-of-generic-interfaces#comment42526942_26997923 вопрос имеет объяснение, почему часть (есть много объяснений ковариации в C# ... не стесняйтесь искать то, которое вам нравится) , Как исправить будет зависеть от того, что вы на самом деле пытаетесь достичь/какие ограничения вы можете использовать на своих интерфейсах - подумайте о ковариации и уточните свои требования. –