Разрешение базовых классов - PullRequest
2 голосов
/ 15 декабря 2011

Я получил иерархию классов с 30 классами, которая имеет четыре уровня глубины.

Например:

  • Class1
    • Class1a
      • Class1ac
    • Class1b
  • Class2

К этому я получил интерфейс под названием IConsumerOf<T>.

Как я могу заставить разработчиков IConsumerOf<Class1> также вызываться всеми классами, которые наследуют Class1? (без реализации IConsumerOf<Class1a> и т. д.)

Редактировать: Добавление ограничения типа для интерфейса не вариант. И обратите внимание на тег Autofac.

Ответы [ 2 ]

1 голос
/ 13 января 2012
builder.RegisterSource(
    new ContravariantRegistrationSource());

Включает это поведение :).Ура! * * 1002

1 голос
/ 15 декабря 2011

Объявите интерфейс как IConsumerOf<T> where T:Class1 вместо

...