首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象和配置

对象和配置
EN

Stack Overflow用户
提问于 2011-01-09 22:30:41
回答 3查看 3.8K关注 0票数 0

我曾经使用Castle作为IoC,但在同一个项目中使用Nhibernate/Castle(IoC)时遇到了问题,所以我转移到了IoC。现在,为了进入问题,我有这样一个类:

代码语言:javascript
复制
class CustomModule :  NinjectModule
{
   public override void Load()
   {
       Bind<Interfaces.ICafe>().To <Concrete.Tea>();
   }
}

Concrete是一个单独的项目,而Interfaces.ICafe是一个不同的项目。在Castle中,我曾经给开发人员提供接口DLL,并要求他实现一个新的具体实现该接口,然后使用app.config配置它,所以无论他实现什么类名,它仍然可以工作,因为他必须在app.config中编写它,所以如果他让它像Concrete.Coffee一样,它仍然可以工作。

但是对于Ninject,他必须使用相同的类名"Tea“来创建一个混凝土,以使其工作,否则它将无法工作,因为它很难编码。

我是个新手,我知道我可能遗漏了什么?

EN

回答 3

Stack Overflow用户

发布于 2011-01-09 22:37:20

(无论如何,在我认识或关注的人中)将IoC绑定移入代码和移出XML已成为一种普遍趋势。大多数情况下,你会获得智能感知和运行时的错误反馈。所以,是的,如果你打算这样做的话,你必须引用Concrete.Tea。

票数 1
EN

Stack Overflow用户

发布于 2011-01-10 00:17:49

如果希望避免引用具体的实现,可以使用约定扩展在运行时加载实现。

-Ian

票数 1
EN

Stack Overflow用户

发布于 2011-01-10 01:42:12

我还没有用过它,但是有Ninject.Extensions.Xml的候选版本,它允许您在XML语言中设置映射。然而,我不得不同意Paul的观点,我通常会避免这样做。还有Ninject.Extensions.Conventions,它可能就是你想要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4639689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档