Tag: 统一容器

MEF与任何IoC

纵观微软的托pipe扩展性框架(MEF)和各种IoC容器(如Unity),我无法看出何时使用一种types的解决scheme。 更具体地说,似乎MEF处理大多数IoCtypes模式,并且像Unity这样的IoC容器不是必需的。 理想情况下,我希望看到一个很好的使用情况,即使用IoC容器代替MEF,或者除了MEF之外。

Ninject vs Unity for DI

我们正在使用ASP.net MVC。 哪个是最好的DI框架Ninject或Unity,为什么?

有人可以解释微软统一?

我一直在阅读有关Unity(dependency injection,控制反转)的MSDN上的文章,但我想我需要用简单的术语(或简单的例子)来解释它。 我熟悉MVPC模式(我们在这里使用它),但是我还不能真正掌握这个Unity的东西,而且我认为这是我们应用程序devise的下一步。

为什么在这个例子中使用PerThreadLifetimeManager?

我正在关注下面的例子来设置统一与我的服务层一起工作。 我的项目设置与本文中的非常相似,除了为什么在注册服务依赖项时使用PerThreadLifetimeManager,我明白了一切。 请记住,我也在使用我的服务层中使用的通用存储库和unitofwork。 大多数统一的例子使用默认(瞬态)生存期pipe理器,因为我的设置类似于下面的我想知道为什么我应该使用PerThreadLifeimeManager? 如果改变了任何东西,我正在为当前表示层使用ASP.NET Web窗体项目。 container.RegisterType<ICatalogService, CatalogService>(new PerThreadLifetimeManager()) 在asp.net MVC 3中使用EF代码第一个dependency injection的存储库模式

使用Unity如何将一个命名的dependency injection到构造函数中?

我有IRespository注册两次(与名字)在下面的代码: // Setup the Client Repository IOC.Container.RegisterType<ClientEntities>(new InjectionConstructor()); IOC.Container.RegisterType<IRepository, GenericRepository> ("Client", new InjectionConstructor(typeof(ClientEntities))); // Setup the Customer Repository IOC.Container.RegisterType<CustomerEntities>(new InjectionConstructor()); IOC.Container.RegisterType<IRepository, GenericRepository> ("Customer", new InjectionConstructor(typeof(CustomerEntities))); IOC.Container.RegisterType<IClientModel, ClientModel>(); IOC.Container.RegisterType<ICustomerModel, CustomerModel>(); 但是,当我想解决这个问题(使用IRepository),我必须做这样的手动解决: public ClientModel(IUnityContainer container) { this.dataAccess = container.Resolve<IRepository>(Client); ….. } 我想要做的就是让它在构造函数中parsing(就像IUnityContainer)。 我需要一些方法来说明哪个命名types要parsing。 像这样的东西:( 注意:不是真正的代码) public ClientModel([NamedDependancy("Client")] IRepository dataAccess) { this.dataAccess = dataAccess; ….. } 有没有办法让我的假代码工作?

企业图书馆Unity与其他IoC容器

使用Enterprise Library Unity与其他IoC容器(Windsor,Spring.Net,Autofac ..)有什么优点和缺点?

有没有解决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 […]

属性注入

我正在试图注入一个自定义的AuthorizeAttribute的依赖如下: public class UserCanAccessArea : AuthorizeAttribute { readonly IPermissionService permissionService; public UserCanAccessArea() : this(DependencyResolver.Current.GetService<IPermissionService>()) { } public UserCanAccessArea(IPermissionService permissionService) { this.permissionService = permissionService; } protected override bool AuthorizeCore(HttpContextBase httpContext) { string AreaID = httpContext.Request.RequestContext.RouteData.Values["AreaID"] as string; bool isAuthorized = false; if (base.AuthorizeCore(httpContext)) isAuthorized = permissionService.UserCanAccessArea(AreaID, httpContext.User); return isAuthorized; } } 这工作,但似乎是解决作为一个单身的含义,我得到的问题在我的前面描述的问题 我想要做的是使用属性注入,但作为我的属性本身不解决的统一我找不到一种方法来configuration容器来拦截和解决属性。 我已经尝试了以下内容: public class […]

Unity将依赖关系注入到具有参数的MVCfilter类中

我正在使用Unity.MVC4dependency injection来访问我的服务。 一切工作,因为它应该注入到我的控制器构造函数时,但我想现在要做的是在我的filter类中使用属性注入 ,所以我可以从内部访问我的数据库。 在我开始这个问题之前,我search了一遍,尝试了不同的例子,但我找不到解决scheme,为我工作。 Bootstrapper.cs public static class Bootstrapper { public static IUnityContainer Initialise() { var container = BuildUnityContainer(); DependencyResolver.SetResolver(new UnityDependencyResolver(container)); return container; } private static IUnityContainer BuildUnityContainer() { var container = new UnityContainer(); container.RegisterType<IAccountRepository, AccountRepository>(); container.RegisterType<IAdministrationRepository, AdministrationRepository>(); container.RegisterType<IUploadDirectlyRepository, UploadDirectlyRepository>(); container.RegisterType<IUserRepository, UserRepository>(); container.RegisterType<INewsRepository, NewsRepository>(); container.RegisterType<IContactRepository, ContactRepository>(); // register all your components with the container […]

主要的C#DI / IoC框架如何比较?

冒着步入圣战疆域的风险,这些stream行的DI / IoC框架的优点和缺点是什么,可以轻易认为是最好的? ..: Ninject 统一 Castle.Windsor Autofac StructureMap 有没有其他的DI / IoC框架的C#,我没有在这里列出? 在我的用例的上下文中,我构build了一个客户端WPF应用程序和一个WCF / SQL服务基础架构,易用性(特别是语法清晰简洁),一致的文档,良好的社区支持和性能都是重要的因素在我的select。 更新: 所引用的资源和重复问题似乎已经过时,能否有一个知道所有这些框架的人出面并提供一些真正的洞察力? 我意识到这个问题上的大多数意见可能是有偏见的,但我希望有人花时间研究所有这些框架,并至less有一个客观的比较。 如果以前没有做过,我很乐意做自己的调查,但是我认为这是至less有一些人已经做了。 第二次更新: 如果您对多个DI / IoC容器有经验,请对这些容器的优缺点进行sorting和总结,谢谢。 这不是发现人们所有的模糊小容器的练习,我正在寻找stream行的(和主动的)框架之间的比较。