//builder.RegisterType<TestA>().As<ITestA>().InstancePerDependency();//瞬态
//builder.RegisterType<TestB>().As<ITestB>().SingleInstance();//单例
//builder.RegisterType<TestC>().As<ITestC>().InstancePerLifetimeScope();//作用域,应用域
//builder.RegisterType<TestD>().As<ITestD>().InstancePerMatchingLifetimeScope("TEST");指定作用域,指定应用域ContainerBuilder containerBuilder = new ContainerBuilder();//注册抽像与具体类 containerBuilder.RegisterType<MainClass>().As<IMainClass>(); IContainer container = containerBuilder.Build(); IMainClass mainClass = container.Resolve<IMainClass>();
//注册具体实例 containerBuilder.RegisterInstance(new MainClass(new ChildClass())); IContainer container = containerBuilder.Build(); IMainClass mainClass = container.Resolve<IMainClass>();
//业务逻辑注入 containerBuilder.Register<IMainClass>( context => { IChildClass childClass = context.Resolve<IChildClass>(); IMainClass mainClass1 = new MainClass(childClass); return mainClass1; });
//泛型注入 containerBuilder.RegisterGeneric(typeof(List<>)).As(typeof(IList<>)); IContainer container = containerBuilder.Build(); IList<MainClass> mainClasses = container.Resolve<IList<MainClass>>(); //count= 0
containerBuilder.RegisterGeneric(typeof(List<>)).As(typeof(IList<>)); containerBuilder.RegisterType<MainClass>().As<IMainClass>(); IContainer container = containerBuilder.Build(); IList<IMainClass> mainClasses = container.Resolve<IList<IMainClass>>(); //count= 1
//程序集注入 Assembly interfaceAssbly = Assembly.LoadFrom("MBS.IConsoleApp.dll"); Assembly servicesAssbly = Assembly.LoadFrom("MBS.ConsoleApp.dll"); containerBuilder.RegisterAssemblyOpenGenericTypes(interfaceAssbly, servicesAssbly).AsImplementedInterfaces(); IContainer container = containerBuilder.Build(); IMainClass mainClass = container.Resolve<IMainClass>();

评论