Structuremap регистрирует несколько конкретных классов с одинаковым интерфейсом - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь использовать несколько экземпляров одного и того же интерфейса / конкретной реализации класса на основе имени, используемого в конструкторе.

Например, я пробовал:

For<IInterface>().Use<TheClass>().Named("a")
    .Ctor<string>("blobName").Is("a-blob");
For<IInterface>().Use<TheClass>().Named("b");
    .Ctor<string>("blobName").Is("b-blob");
For<IInterface>().Use<TheClass>().Named("c");
    .Ctor<string>("blobName").Is("c-blob");

public Constructor(IInterface a, IInterface b) ...

Однако, он дает один и тот же экземпляр TheClass для a и b. Я хочу, чтобы он был другим, потому что у меня есть интерфейс IAzureBlobStorage и класс AzureBlobStorage, которые принимают в своем конструкторе blobName.

Я стараюсь избегать создания нескольких классов (A: TheClass ... B: TheClass), которые просто передают другое значение blobName в конструкторе. Кроме blobName, в классах нет никакой разницы!

Большое спасибо!

...