StructureMap - AddAllTypesOf

时间:2014-05-20 13:35:00

标签: c# inversion-of-control ioc-container structuremap

使用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 个答案:

没有答案