首页 文章

依赖性解决作为一个单独的项目..如何?

提问于
浏览
3

我正在使用asp.net mvc创建一个新的应用程序,我使用munq IOC容器作为我的依赖注入..问题是我想创建一个新的依赖项解决项目,我可以注册mvc项目的所有控制器和基础设施项目的存储库..我必须在我的mvc应用程序中添加依赖性解析项目作为参考,因为这是起点...但问题是为了在这个单独的应用程序中注册控制器我需要参考mvc在依赖关系解决方案项目本身......但这样的事情是不可能的,因为这会导致循环引用..

那么如何解决这个问题呢?或者管理依赖项解析的最佳方法是什么?我不想最终注册Global.asax中的所有内容

2 回答

  • 3

    从Munq.Codeplex.com的源选项卡获取最新版本 . 这个版本有一个视图改进,它是我最熟悉的版本,我写了它 .

    要防止循环引用进行注册,请创建一个类项目,其中包含对Munq.Interfaces以及您希望注册的接口和实现的敬意 .

    创建一个实现IMunqConfig的类 . 它有一种方法 void RegisterIn(IIocContainer container) . 实现此方法 .

    public class MyRegistration : IMuncConfig
    {
    
        public void RegisterIn(IIocContainer container)
        {
    
            container.Register<IMyInterface>(c => new MyImplementation());
    
            //       OR
    
            container.Register<IMyInterface, MyImplementation>();
    
           // Repeat as required for each thing to register
        }
    }
    

    然后在global.asax中

    protected void Application_Start()
    {
        IocContainer = new Container();
        Munq.COnfigurationLoader.FindAndRegisterDependencies(container);
    
        AreaRegistration.RegisterAllAreas();
        RegisterRoutes(RouteTable.Routes);
    }
    

    这将在bin目录中搜索具有实现IMunqConfig的类的任何dll,并在每个dll上执行RegisterIn方法 . 所以只需将注册dll放入bin目录并自动注册:)

    马修

  • 0

    我想创建一个新的依赖项解决项目,我可以注册mvc项目的所有控制器和基础设施项目的存储库 .

    我不会在与您的存储库相同的项目中注册MVC控制器 . MVC应用程序应“拥有”其组成,包括注册其内部依赖项 .

    理想情况下,您的基础设施项目的注册应该在该项目中,特别是如果它可以提供给使用不同DI容器的其他项目 . 如果该项目需要保持与DI无关,那么将DI注册分离到单独的项目中可能是有意义的 .

    但我绝对不会让服务(如你的存储库)负责注册其消费者的内部依赖(如你的MVC应用程序) .

相关问题