Исключить определенный класс из коллекции IEnumerable - PullRequest
0 голосов
/ 09 мая 2019

В Unity IoC, если интерфейс имеет несколько реализаций, как указать, что определенный класс не должен включаться в коллекцию?

Например,

class Audi : ICar {}
class BMW : ICar {}
class Mercedes : ICar {}

public HomeController(IEnumerable<ICar> cars)

public ValuesController(IEnumerable<ICar> cars)

Я не знаюне хотите, чтобы объект Mercedes находился в коллекции во время инициализации HomeController.

Пожалуйста, предоставьте решение, которое подходит в общем виде.

1 Ответ

0 голосов
/ 09 мая 2019

Если вы хотите отличить Audi и BMW от Mercedes, вы должны добавить еще один уровень к наследованию вашего интерфейса. Давайте назовем это ICoolCar в этом примере (должно быть названо в честь того, что отличает другие бренды от Mercedes).

interface ICar {}
interface ICoolCar : ICar {}

class Audi : ICoolCar {}
class BMW : ICoolCar {}
class Mercedes : ICar {}

public HomeController(IEnumerable<ICoolCar> cars)
...