StructureMap разрешает зависимость посредством внедрения вместо расположения службы

В моем проекте я регистрирую многоISerializers реализации со сборочным сканером. FWIW это код, который регистрирует мойISerializers

Scan(scanner =>
{
    scanner.AssemblyContainingType<ISerializer>();
    scanner.AddAllTypesOf<ISerializer>().NameBy(type => type.Name);
    scanner.WithDefaultConventions();
});

Который потом правильно прописывается

ISerializer (...ISerializer)
Scoped as:  Transient

JsonSerializer    Configured Instance of ...JsonSerializer
BsonSerializer    Configured Instance of ...BsonSerializer

И так далее.

В настоящее время единственный способ выяснить, как разрешить сериализатор, который я хочу, это жестко закодировать вызов местоположения службы с помощью

jsonSerializer = ObjectFactory.GetNamedInstance<ISerializer>("JsonSerializer");

Теперь я знаю в своем классе, что мне конкретно нужен jsonSerializer, поэтому есть ли способ настроить правило или подобное, которое говорит для ISerializer для подключения именованного экземпляра на основе имени свойства? Чтобы я мог иметь

MySomeClass(ISerializer jsonSerializer, ....)

И StructureMap правильно разрешить этот сценарий? Или я подхожу к этому неправильно, и, возможно, я должен просто зарегистрировать конкретный тип, который реализует ISerializer, а затем просто специально использовать

MySomeClass(JsonSerializer jsonSerializer, ....)

что-то в этом роде с конкретным классом?

Ответы на вопрос(4)

Ваш ответ на вопрос