我有现有的项目,它使用AutoFac作为IoC。 在注册码我有这些行: var resolver = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(resolver)); config.DependencyResolver = new AutofacWebApiDependencyResolver(resolver); 所以我的问题是什么DependencyResolver.SetResolver和HttpConfiguration.DependecyResolver之间的区别? 我为什么要分配他们?
我是DI和IoC的新手,我试图决定要学习哪个IoC容器。 我已经看到几个性能比较 ,其中三个容器引用似乎performance非常好。 但是,我没有发现包含Hiro或Simple Injector的function比较。 Autofac的社区似乎是最大的,但Hiro和简单的喷油器在基准testing中的速度非常快,特别是简单的喷油器声称非常容易学习。 也就是说,我不想学习一个,因为function集是有限的,所以不得不切换到另一个。 因为这个原因,我倾向于Autofac,因为它相当成熟,function齐全( 这里和这里都有很好的文章),也是最快的IoC容器之一。 有没有人有三个这些容器中的至less两个的经验? 你能提供任何function比较?
两个范围有什么区别? 我在每个层(存储库,服务,MVC应用程序)build立Module (s),但为了有InstancePerHttpRequest您需要Autofac.Mvc程序集。 我应该在我的Repository和Service层中使用哪个范围?
鉴于以下注册 builder.Register<A>().As<I>(); builder.Register<B>().As<I>(); builder.Register<C>().As<I>(); var container = builder.Build(); 我正在寻找解决typesI的所有实例作为IEnumerable (数组或集合,这并不重要)。 在温莎,我会写下以下内容。 foreach(I i in container.ResolveAll<I>()) { … } 我正在从Windsor迁移到Autofac 1.4.4.561,但看不到相应的语法。
是否可以configurationAutofac使用ASP .NET MVC和ASP .NET Web Api。 我知道依赖parsing器是不同的。 但是当使用logging的方法时,我只能设置一个全局parsing器。 // Set the dependency resolver implementation. GlobalConfiguration.Configuration.DependencyResolver = resolver; 这个方法不好吗? 我应该将我的解决scheme分成两个项目,并分别处理每个dependency injection?
在应用程序中从类内部获取Autofac容器的build议方法是什么? Autofac是否提供了解决一个类的IContainer属性,或者我是否需要在创build一个全球化的容器后存储它?
我已经更新了我的项目中的所有nuget包,以及AutoFac MVC5集成包(删除了MVC4之一),但仍然没有骰子。 在覆盖成员时违反了inheritance安全规则:“Autofac.Integration.WebApi.AutofacWebApiDependencyResolver.BeginScope()”。 重写方法的安全性可访问性必须匹配被重写的方法的安全性可访问性。
是否有可能在运行时注册一个服务,也就是在ContainerBuilder被创build并且Container已经被创build(并且ContainerBuilder处理完毕)后?
Autofac自动为Func<T>生成工厂; 我甚至可以传递参数。 public class MyClass { public MyClass(Func<A> a, Func<int, B> b) { var _a = a(); var _b = b(1); } } 我能和Ninject一样吗? 如果没有,我可以应用哪种解决方法? 谢谢。 更新 : 刚发现这个post,似乎答案是否定的: 如何使用Ninject处理静态方法的类?