Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# IOC将在服务层中注册存储库,并在预订层中注册服务_C#_Asp.net Mvc_Structuremap - Fatal编程技术网

C# IOC将在服务层中注册存储库,并在预订层中注册服务

C# IOC将在服务层中注册存储库,并在预订层中注册服务,c#,asp.net-mvc,structuremap,C#,Asp.net Mvc,Structuremap,我正在使用structuremap在控制器中注册服务,我还需要在服务中注册存储库。我将如何做到这一点,因为它们是两个不同的项目,需要完全相同的国际奥委会注册。实际上,我在表示层使用它,并在控制器中注入服务。 我需要知道一个好的实践方法,使用相同的IOC容器在两个项目中进行注入。将IOC容器和任何共享服务实现放入第三个项目(类库)其他两个项目都引用了它。我倾向于为我的每个项目保留一个StructureMap注册表,以便它们可以处理自己的配置。然后,我的主项目向其每个依赖项添加引用。主要来说,我通常

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

将IOC容器和任何共享服务实现放入第三个项目(类库)其他两个项目都引用了它。

我倾向于为我的每个项目保留一个StructureMap注册表,以便它们可以处理自己的配置。然后,我的主项目向其每个依赖项添加引用。主要来说,我通常有一个bootstrapper类,负责创建和配置容器。(我尽可能避免使用静态ObjectFactory。)

公共类应用程序引导器
{
公共IContainer容器{get;set;}
公共应用程序bootstraper()
{
容器=新容器(x=>
{
x、 AddRegistry();
x、 AddRegistry();
//更多注册表位于此处或特定于应用程序的配置。
});
}
}
关于让一个项目依赖于另一个支持StructureMap的项目。版本2.5.4添加了在当前注册表中包含另一个注册表的功能

例如,我有一个“公共”项目,我需要依赖它,我可以执行以下操作:

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

        Scan(scan =>
        {
            scan.TheCallingAssembly();
            scan.WithDefaultConventions();
        });
    }
}
公共类项目注册表:注册表
{
公共工程注册处()
{
IncludeRegistry();
扫描(扫描=>
{
扫描。卡入总成();
scan.WithDefaultConventions();
});
}
}

希望这能有所帮助。

我发现这个问题还不清楚:您需要注册来自多个不同库的依赖关系,还是需要为两个不同的应用程序连接相同的依赖关系?这对我来说也是一个显而易见的答案,但我只是不知道这是否是一个好的做法,我需要在不同的项目(UI和服务)中使用IOC。
    public class ProjectRegistry : Registry
{
    public ProjectRegistry()
    {
        IncludeRegistry<CommonsRegistry>();

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