zoukankan      html  css  js  c++  java
  • UnityContainer中RegisterType与RegisterInstance的区别

    应用中同时使用到这两种注册方式,以下是自己的理解

    RegisterInstance注册单例模式

    1             _container.RegisterInstance<INavigationService>(NavigationService);
    2             _container.RegisterInstance<ISessionStateService>(SessionStateService);
    3             _container.RegisterInstance<IEventAggregator>(EventAggregator);
    4             _container.RegisterInstance<IResourceLoader>(new ResourceLoaderAdapter(new ResourceLoader()));         

    注册的为已经实例化的对象,每次调用Resolve取出注册对象均为唯一单例

    RegisterType注册类型

    1             _container.RegisterType<IProductCatalogRepository, ProductCatalogRepository>();
    2             _container.RegisterType<IShoppingCartRepository, ShoppingCartRepository>();
    3             _container.RegisterType<ICheckoutDataRepository, CheckoutDataRepository>();
    4             _container.RegisterType<IOrderRepository, OrderRepository>();    

    仅会在调用Resolve时,实例化注册对象,多次调用,重复实例化多个对象

    可添加类型ContainerControlledLifetimeManager 也注册为单例

    1             _container.RegisterType<IProductCatalogService, ProductCatalogServiceProxy>(new ContainerControlledLifetimeManager());
    2             _container.RegisterType<IOrderService, OrderServiceProxy>(new ContainerControlledLifetimeManager());
    3             _container.RegisterType<IShoppingCartService, ShoppingCartServiceProxy>(new ContainerControlledLifetimeManager());    

    1

                _container.RegisterType<IProductCatalogRepository, ProductCatalogRepository>(new ContainerControlledLifetimeManager());

    2

                _container.RegisterInstance<IProductCatalogRepository>(new ProductCatalogRepository()); 

    1与2的不同,个人理解为实例化的时间不同,1在首次通过Resolve调用的时候,2在注册的时候进行实例化。

  • 相关阅读:
    Yaffs文件系统简介
    网新恒天2013年校园招聘笔试
    【Android】项目中每个文件夹的作用
    唐-诗:《春江花月夜》
    汉语-词语:诗词歌赋
    汉语-词语:四季
    图书-心理学:《思考致富》
    影视-电影:《释迦摩尼佛传》
    软件开发-开发模式:极限编程
    【计算机视觉】SIFT中LoG和DoG比較
  • 原文地址:https://www.cnblogs.com/guofu/p/5260074.html
Copyright © 2011-2022 走看看