2010-01-05 103 views
3

我正在使用结构图在控制器中注册服务,我也需要在服务中注册存储库。我将如何做,因为他们是两个不同的项目,需要完全相同的国际奥委会注册。其实我在表示层上使用它并在控制器中注入服务。 我需要知道一个很好的实践方法,使用相同的IOC容器,注入这两个项目。国际奥委会将服务层中的注册库和注册层中的服务注册

+0

我发现问题不清楚:您是否需要注册来自多个不同库的依赖关系,还是需要为两个不同的应用程序连接相同的依赖关系? – 2010-01-05 11:57:50

回答

5

将IOC容器和任何共享服务实现置于另外两个引用的第三个项目(类库)中。

+0

这对我来说也是明显的答案,但我不知道如果这是一个很好的实践,我需要在不同的项目(UI和服务)中使用IOC。 – diego 2010-01-05 12:23:12

+0

并感谢您的答案! – diego 2010-01-05 12:23:55

+0

没问题。是的,听起来对我很好! – 2010-01-05 12:39:25

0

我倾向于为我的每个项目保留一个StructureMap注册表,以便他们可以处理他们自己的配置。我的主项目然后添加对每个依赖关系的引用。在我的主要中,我通常有一个引导程序类,负责创建和配置容器。 (我避免在静态ObjectFactory的可能。)

public class ApplicationBootstraper 
{ 
    public IContainer Container { get; set; } 

    public ApplicationBootstraper() 
    { 
     Container = new Container(x=> 
     { 
      x.AddRegistry<SettingsRegistry>(); 
      x.AddRegistry<ProjectRegistry>(); 

      //more registries go here or application specific configuration. 
     }); 
    } 
} 

对于有项目采取的另一个项目是StructureMap意识到依赖。 2.5.4版增加了在当前注册表中包含另一个注册表的功能。

比如我有一个“共同”项目,我需要对我的依赖可以做到以下几点:

public class ProjectRegistry : Registry 
{ 
    public ProjectRegistry() 
    { 
     IncludeRegistry<CommonsRegistry>(); 

     Scan(scan => 
     { 
      scan.TheCallingAssembly(); 
      scan.WithDefaultConventions(); 
     }); 
    } 
} 

希望这有助于。