Tag: 反向控制

简单的喷油器vs Hiro vs Autofac

我是DI和IoC的新手,我试图决定要学习哪个IoC容器。 我已经看到几个性能比较 ,其中三个容器引用似乎performance非常好。 但是,我没有发现包含Hiro或Simple Injector的function比较。 Autofac的社区似乎是最大的,但Hiro和简单的喷油器在基准testing中的速度非常快,特别是简单的喷油器声称非常容易学习。 也就是说,我不想学习一个,因为function集是有限的,所以不得不切换到另一个。 因为这个原因,我倾向于Autofac,因为它相当成熟,function齐全( 这里和这里都有很好的文章),也是最快的IoC容器之一。 有没有人有三个这些容器中的至less两个的经验? 你能提供任何function比较?

如何避免贫血域模型,或者何时将方法从实体转移到服务中

我有一个共同的情况,我正在寻找一些更有经验的DDD和领域build模经验的人的指导。 假设我开始构build一个博客引擎,第一个要求是文章发布后,用户可以开始发布评论。 这开始很好,并导致以下devise: public class Article { public int Id { get; set; } public void AddComment(Comment comment) { // Add Comment } } 我的MVC控制器是这样devise的: public class ArticleController { private readonly IRepository _repository; public ArticleController(IRepository repository) { _repository = repository; } public void AddComment(int articleId, Comment comment) { var article = _repository.Get<Article>(articleId); article.AddComment(comment); _repository.Save(article); return […]

NInject:你在哪里保持你对内核的引用?

我在一个新的Web应用程序上使用NInject,有两件事情我不清楚: 我不需要保持对内核的引用(Session / Appvariables),以确保GC不会收集所有的实例吗? 例如,如果我指定。使用()然后收集内核对象,并不是我所有的“单身”收集? 如果我确实需要保持对内核对象的引用,那么如何让传递给WithArguments()的参数改变或者是不可能的。

解决IContainer

在应用程序中从类内部获取Autofac容器的build议方法是什么? Autofac是否提供了解决一个类的IContainer属性,或者我是否需要在创build一个全球化的容器后存储它?

如何在ASP.NET Web窗体中使用dependency injection

我正在试图找出一种方法来使用ASP.NET Web窗体控件的dependency injection。 我有很多直接创build存储库的控件,并使用它们来访问和绑定数据等。 我正在寻找一种模式,我可以将库传递给控件(IoC),所以我的控件仍然不知道库的构build方式以及它们来自哪里等等。 我不希望从我的控件有一个依赖的IoC容器,因此我只是想能够构造具有构造函数或属性注入的控件。 (只是为了使事情复杂化,这些控件正在构build,并在运行时由CMS放置在页面上!) 有什么想法吗?

有没有解决ASP.NET MVC的ContactsManager教程中的dependency injection循环问题的好方法?

如果你不知道我在说什么,或者阅读本教程并尝试自己添加dependency injection,或者试着用我的解释来解决问题。 注意:此问题不在ASP.NET原始教程的范围内。 本教程只提示使用的模式是dependency injection友好的。 问题基本上是Controller,ModelStateWrapper和ContactManagerService之间存在依赖关系。 ContactController构造函数接受一个I​​ContactManagerService。 ContactManagerService构造函数接受一个I​​ContactManagerRepository (不重要)和一个IValidationDictionary (ModelStateWrapper实现) 。 ModelStateWrapper构造函数接受一个ModelStateDictionary (在控制器上是一个名为“ModelState”的属性) 。 因此,依赖循环如下所示:Controller> Service> ModelStateWrapper> Controller 如果您尝试向此添加dependency injection,它将失败。 所以我的问题是, 我该怎么办呢? 其他人已经发布了这个问题,但答案很less,不同,都似乎有点“黑客”。 我目前的解决scheme是从IService的构造函数中删除IModelStateWrapper,并像这样添加一个Initialize方法: public class ContactController : Controller { private readonly IContactService _contactService; public ContactController(IContactService contactService) { _contactService = contactService; contactService.Initialize(new ModelStateWrapper(ModelState)); } //Class implementation… } public class ContactService : IContactService { private IValidationDictionary […]