Tag: unity container

Unity IoC用于动态解析程序集

我们使用统一作为IoC。 我们遇到了独特的问题。 我们创建了名为IPlugin的接口。 该接口在各种第三方供应商之间共享,以基于此接口开发自己的插件。 然后这些插件适合我们的系统。 供应商将提供他们的插件作为DLL。 我们想要的是,使用unity我们想要解析用IPlugin接口实现的所有程序集类型。 我开始知道这可以通过MEF导出属性实现,我想知道这是否可以通过Unity使用一些简短的扩展来实现。 我们的代码 Public interface IPlugin { Void ProcessData(); } Public class DataProcessor { Var pluginList = unityContainer.ResolveAssemblies() /* There is no such method in unity but what we want is scan all assemblies in bin folder and load all types which are inheriting from IPlugIn */ } 供应商的集会 […]

按属性划分C#unity拦截

有没有办法在C#unity中如何使用属性拦截并将对象注册代码保存在XML文件中(如app.config)? 如果是的话,你能为我提供代码,这样的注册应该怎么样? 我做了很多解决方法,但没有找到解决此问题的方法。

统一解析同一类型的多个实例

我想做一个简单的多种类型注册的解决方案(最终注入构造函数,但使用.Resolve来查看Unity是否能够执行此类操作。 在下面的每种情况下,Unity都会解析0应该解析的项目2。 是否有一些统一的转变可以打开2007年后的行为? 或者我只是大错特错了? 这是我的代码: public interface IFoo {} public class Foo1 : IFoo{} public class Foo2 : IFoo{} class Program { static void Main(string[] args) { var container = new UnityContainer(); container.RegisterType(); container.RegisterType(); // container.Resolve<IEnumerable>(); returns 0 // container.ResolveAll(); returns 0 var foos = container.Resolve(); Console.WriteLine(foos.Count()); Console.ReadLine(); } }

使用Unity在多个类型中注入相同的DataContext实例

假设我有IRepository接口及其实现SqlRepository,它将LINQ作为参数作为SQL DataContext的参数。 假设我有IService接口及其实现服务,它需要三个IRepository,IRepository和IRepository。 演示代码如下: public interface IRepository { } public class SqlRepository : IRepository { public SqlRepository(DataContext dc) { … } } public interface IService { } public class Service : IService { public Service(IRepository r1, IRepository, IRepository) { … } } 在创建Service类以使用相同的DataContext注入所有三个存储库时是否有任何方法?

Unity:无法构造LogWriter类型

对于以下“项目”,我在解析Unity for DI时会遇到一个非常烦人且无法解释的错误。 InvalidOperationException – 无法构造LogWriter类型。 您必须配置容器以提供此值。 ?ex.Message; “依赖项的解析失败,type = \”WindowsFormsApplication1.Performance \“,name = \”(none)\“。\ r \ n发生exception时:解析时。\ r \ nException是:InvalidOperationException – LogWriter类型不能是您必须配置容器以提供此值。\ r \ n ———————————- ————- \ r \ n在exception时,容器是:\ r \ n \ r \ n解析WindowsFormsApplication1.Performance,(无)\ r \ n解析参数\ “lw”构造函数WindowsFormsApplication1.Performance(Microsoft.Practices.EnterpriseLibrary.Logging.LogWriter lw,Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionManager em)\ r \ n解析Microsoft.Practices.EnterpriseLibrary.Logging.LogWriter,(none) \ r \ n” ?ex.StackTrace; “在Microsoft.Practices.Unity.UnityContainer.DoBuildUp(类型t,对象存在,字符串名称,IEnumerable 1 resolverOverrides) […]

Unity IoC不会将dependency injectionWeb API Controller

我是使用Unity的新手,但我的问题是每当我调用我的Web服务时,我都会得到一个例外情况 “确保控制器具有无参数的公共构造函数” 我已经遵循了多个教程,但仍然遇到了同样的问题。 在我的WebApiConfig类的Register函数中,我有 var container = new UnityContainer(); container.RegisterType(new HierarchicalLifetimeManager()); config.DependencyResolver = new UnityResolver(container); 这是我的UnityResolver类 using Microsoft.Practices.Unity; using System; using System.Collections.Generic; using System.Web.Http.Dependencies; public class UnityResolver : IDependencyResolver { protected IUnityContainer container; public UnityResolver(IUnityContainer container) { if (container == null) { throw new ArgumentNullException(“container”); } this.container = container; } public object GetService(Type serviceType) { […]

使用Unity注入数组

我的目标是构造函数注入实现接口的对象数组。 以下是我目前的方式。 Container .RegisterInstance(ParseCompany(args[1]) .RegisterInstance(ParseTargets(args[2])) .RegisterInstance(new ILoader[] { Container.Resolve(), Container.Resolve<PaymentLoader(), Container.Resolve<InvoiceLoader() }); 以这种方式在容器配置中调用Resolve是典型的,还是有更标准的方法来完成同样的事情?

在Unity容器中将null注册为实例

我有一个带可选依赖项的存储库类: class MyRepository : BaseRepository, IMyRepository { public MyRepository(IDataContext dataContext, ICacheProvider cacheProvider = null) : base(dataContext, cacheProvider) {} // … } cacheProvider参数的存在充当存储库的策略。 我想要像这样设置Unity容器: Container.RegisterType(new PerResolveLifetimeManager(), new InjectionConstructor()) .RegisterInstance(null) // ??? .RegisterType(); 也就是说没有为MyRepository指出具有一个参数的特定InjectionConstructor,而是使用带有null的默认构造函数作为cacheProvider参数。 有没有办法做到这一点?

ASP.NET MVC按请求注入

我需要为每个请求注入EF上下文。 有没有办法实现它?

如何将Owin上下文传递给注入Api控制器的Repo

我有一个MVC WebApi owin(软托管)项目,它使用Unity来解析控制器依赖项 看起来像这样 public class PacientaiController : ODataController { private readonly IEntityRepo repo; public PacientaiController(IEntityRepo repo) { this.repo = repo; } 我试图解决的问题是 – 如何将’OwinContex’传递给回购。 public class PacientasEntityRepo:IEntityRepo,IDisposable { public PacientasEntityRepo(IOwinContext ctx) { ……… 如果我尝试在Startup.cs注册它 Container.RegisterType(new InjectionFactory(o => HttpContext.Current.GetOwinContext())); 我得到一个空引用,说HttpContext.Current是NULL 这里的主要思想是将当前经过身份validation的用户传递给repo,因为Repo托管逻辑以查询数据库,具体取决于用户。 (如果用户是Admin,则返回此数据,如果用户是guest – 返回此数据) 关键是 – 这是一个自我主持人!