StructureMap - AddAllTypesOf

С StructureMap 2.6.4.1 (нет, я еще не обновился; скоро), я пытаюсь сделать что-то вроде этого:

Scan(scan => scan.AddAllTypesOf<IMap>()
      .NameBy(t => 
          {
              if (t.Namespace.IsNullOrWhiteSpace()) return null;
              if (t.Namespace.Contains("Foo")) return "Foo";
              if (t.Namespace.Contains("Bar")) return "Bar";
              return null;
          }));

А потом позже:

container.GetAllInstances<IMap>("Bar"); // doesn't compile

Мой первый вопрос таков: предназначен ли StructureMap только для одной конкретной регистрации на имя?

Единственный способ обойти это - сделать что-то вроде этого:

For<IEnumerable<IMap>>().Add(c =>
            {
                var maps = c.GetAllInstances<IMap>();
                var filteredMaps = maps
                    .Where(m => m.GetType().Namespace.Contains("Bar"))
                    .ToList();
                return filteredMaps;
            })
            .Named("Bar");

Есть ли способ лучше?

0 ответов

Другие вопросы по тегам