C#,Ninject:你把你的内核和模块放在哪里?我正在创建一个小型C#应用程序,它目前由一个核心程序集和一个winforms程序集组成。我意识到我可能真的不需要像Ninject这样小的东西,但我想我会试一试。无论如何,通过使用Ninject,我了解到您将编写一组返回映射类等的模块。之后,您创建一个IKernel实例并将模块加载到其中。但是我应该把这些模块放在哪里呢?我在哪里保存内核?东西去哪儿了?您可以为内核创建静态包装器类。这样你就可以像ServiceLocator.Resolve()那样注册服务,有两种方式:内联注册和模块注册。它们都应该在启动时加载。模块更适合组织。也许从StructureMap开始会更容易,因为它有静态类和自动映射。这些截屏视频应该可以帮助您入门:+1到Marek的回答-绝对是一个很好的浏览资源。一些要点......你甚至可以在一个小应用程序中尝试这样做。仔细考虑看似简单的问题也很重要,例如您要问的问题。使用DI,你真的必须做一些工作才能真正欣赏它——我在“哦,我只有一个小应用程序”(拒绝)营地呆了很长时间,直到我真正使用它。尽管学校通常应该转移到服务定位器并只注入[不依赖于容器]。最好不要使用服务定位器,因为没有人需要知道容器(内核)在哪里。模块主要用于将事务分批注册到特定的整体Container(内核)中。Ninject肯定有一个规范的“全局容器”单例实现吗?编辑:刚找到一个:-http://www.codethinked.com/creating-a-binding-factory-for-ninject另见Ninject:如何注入类库?我的意见:正如Marek所说,您应该为内核创建一些(可能是静态的)包装器,其中包含IKernel实例。它应该包含一个Resolve方法,并且可能包含一个Load(INinjectModule模块)方法-都是静态的。在每个程序集中,您可以简单地定义自己的INinjectModule,它映射该程序集中的类。内核包装器位于“最低”、最常见的程序集中(通常是Log和Utils所在的程序集)。这是因为内核必须可以从所有部分访问-因此它必须在一个程序集中,并且所有其他部分都可以引用它。如果您没有,您可以随时创建一个。这似乎有点棘手,预计内核将处于“最高”程序集(可执行程序集)中。错误的。要注册程序集中的所有模块,只需在每个模块中调用Kernel.Load(newXXModule)。以上就是C#学习教程:C#,Ninject:你把内核和模块放在哪里?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
