NopCommerce源码分析ContainerBuilder builder.Update(container)
2016-06-09 17:35
441 查看
/// <summary> /// Register dependencies /// </summary> /// <param name="config">Config</param> protected virtual void RegisterDependencies(NopConfig config) { var builder = new ContainerBuilder(); var container = builder.Build(); this._containerManager = new ContainerManager(container); //we create new instance of ContainerBuilder //because Build() or Update() method can only be called once on a ContainerBuilder. //dependencies var typeFinder = new WebAppTypeFinder(); builder = new ContainerBuilder(); builder.RegisterInstance(config).As<NopConfig>().SingleInstance(); builder.RegisterInstance(this).As<IEngine>().SingleInstance(); builder.RegisterInstance(typeFinder).As<ITypeFinder>().SingleInstance(); builder.Update(container); //register dependencies provided by other assemblies builder = new ContainerBuilder(); var drTypes = typeFinder.FindClassesOfType<IDependencyRegistrar>(); var drInstances = new List<IDependencyRegistrar>(); foreach (var drType in drTypes) drInstances.Add((IDependencyRegistrar) Activator.CreateInstance(drType)); //sort drInstances = drInstances.AsQueryable().OrderBy(t => t.Order).ToList(); foreach (var dependencyRegistrar in drInstances) dependencyRegistrar.Register(builder, typeFinder, config); builder.Update(container); //set dependency resolver DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); } #endregion
相关文章推荐
- autofac Adding services after container has been built
- hdu 3836 Equivalent Sets【强连通Kosaraju+缩点染色】
- iOS UIAlertController 警告框详解
- iOS开发之int,NSInteger,NSUInteger,NSNumber的使用
- win10 uefi Ubuntu14.04双系统
- ros_arduino_bridge功能包集的使用错误及解决方法总结
- 开启kerberos后,hue管理hbase
- 347. Top K Frequent Elements
- 1007. Maximum Subsequence Sum
- POJ 2457 Part Acquisition【Dij+记录路径】
- EasyUi基础学习(一)—基本组件(上)
- [HDU 5288] OO's Sequence (序列DP)
- iOS AutoLayout: UIView 关联 Xib 不设置 File's Owner
- CodeForces 28c Bath Queue(概率dp)
- 对比StringBuffer和StringBuilder
- iOS开发 - 第02篇 - UI进阶 - 10 - 事件处理
- 关于while(cin>>value)怎么停
- RequireJS学习总结
- colorful i106q装安卓系统
- Range Sum Query - Immutable