public OrganizationServiceCacheV5(CrmServiceCreatorV5 crmServiceCreator, ConfigurationSettings settings)
 {
     Assert.ArgumentNotNull(crmServiceCreator, "crmServiceCreator");
     Assert.ArgumentNotNull(settings, "settings");
     this.crmServiceCreator = crmServiceCreator;
     this.settings          = settings;
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Resolve an instance of the default requested type from the container.
        /// </summary>
        /// <typeparam name="T"><see cref="T:System.Type"/> of object to get from the container.</typeparam>
        /// <param name="settings">The configuration settings.</param>
        /// <returns>The retrieved object.</returns>
        protected T Resolve <T>(ConfigurationSettings settings)
        {
            if (unityContainer == null)
            {
                lock (locker)
                {
                    if (unityContainer == null)
                    {
                        var container = new UnityContainer();
                        switch (settings.ApiVersion)
                        {
                        case ApiVersion.V3:
                            var crmServiceCreatorV3 = new CrmServiceCreatorV3();
                            container.RegisterInstance(crmServiceCreatorV3.CreateService(settings), new ContainerControlledLifetimeManager())
                            .RegisterInstance(crmServiceCreatorV3.CreateMetadataService(settings), new ContainerControlledLifetimeManager())
                            .RegisterType <ICacheService, CacheService>(new ContainerControlledLifetimeManager())
                            .RegisterType <IContactToUserConverterV3, ContactToUserConverterV3>(new ContainerControlledLifetimeManager())
                            .RegisterType <IMarketingListToRoleConverterV3, MarketingListToRoleConverterV3>(new ContainerControlledLifetimeManager())
                            .RegisterType <UserRepositoryBase, UserRepositoryV3>(new ContainerControlledLifetimeManager())
                            .RegisterType <RoleRepositoryBase, RoleRepositoryV3>(new ContainerControlledLifetimeManager())
                            .RegisterType <ProfileRepositoryBase, ProfileRepositoryV3>(new ContainerControlledLifetimeManager())
                            .RegisterType <EntityRepositoryBase, Sources.Repository.V3.EntityRepository>(new ContainerControlledLifetimeManager());

                            break;

                        case ApiVersion.V4:
                            var crmServiceCreator4 = new CrmServiceCreatorV4();
                            container.RegisterInstance(crmServiceCreator4.CreateService(settings), new ContainerControlledLifetimeManager())
                            .RegisterInstance(crmServiceCreator4.CreateMetadataService(settings), new ContainerControlledLifetimeManager())
                            .RegisterType <ICacheService, CacheService>(new ContainerControlledLifetimeManager())
                            .RegisterType <IContactToUserConverterV4, ContactToUserConverterV4>(new ContainerControlledLifetimeManager())
                            .RegisterType <IMarketingListToRoleConverterV4, MarketingListToRoleConverterV4>(new ContainerControlledLifetimeManager())
                            .RegisterType <UserRepositoryBase, UserRepositoryV4>(new ContainerControlledLifetimeManager())
                            .RegisterType <RoleRepositoryBase, RoleRepositoryV4>(new ContainerControlledLifetimeManager())
                            .RegisterType <ProfileRepositoryBase, ProfileRepositoryV4>(new ContainerControlledLifetimeManager())
                            .RegisterType <EntityRepositoryBase, Sources.Repository.V4.EntityRepository>(new ContainerControlledLifetimeManager());
                            break;

                        case ApiVersion.V5:
                            var crmServiceCreatorV5 = new CrmServiceCreatorV5();
                            container.RegisterInstance(new OrganizationServiceCacheV5(crmServiceCreatorV5, settings), new ContainerControlledLifetimeManager())
                            .RegisterType <ICacheService, CacheService>(new ContainerControlledLifetimeManager())
                            .RegisterType <IContactToUserConverterV5, ContactToUserConverterV5>(new ContainerControlledLifetimeManager())
                            .RegisterType <IMarketingListToRoleConverterV5, MarketingListToRoleConverterV5>(new ContainerControlledLifetimeManager())
                            .RegisterType <UserRepositoryBase, UserRepositoryV5>(new ContainerControlledLifetimeManager())
                            .RegisterType <RoleRepositoryBase, RoleRepositoryV5>(new ContainerControlledLifetimeManager())
                            .RegisterType <ProfileRepositoryBase, ProfileRepositoryV5>(new ContainerControlledLifetimeManager())
                            .RegisterType <EntityRepositoryBase, EntityRepository>(new ContainerControlledLifetimeManager());
                            break;
                        }

                        unityContainer = container;
                    }
                }
            }

            return(unityContainer.Resolve <T>());
        }
Ejemplo n.º 3
0
        public RoleRepositoryBase GetRepository(ConfigurationSettings settings)
        {
            return(base.Resolve <RoleRepositoryBase>(settings));

            Type           rf = typeof(RepositoryFactory);
            FieldInfo      uf = rf.GetField("unityContainer", BindingFlags.Static | BindingFlags.NonPublic);
            UnityContainer u  = (UnityContainer)uf.GetValue(null);

            ResolverOverride[] r = new ResolverOverride[0];

            switch (settings.ApiVersion)
            {
            case ApiVersion.V3:
            {
                CRMSecurityProvider.Repository.V3.CrmServiceCreatorV3 crmServiceCreatorV3 = new CRMSecurityProvider.Repository.V3.CrmServiceCreatorV3();

                //return new RoleRepositoryV3(crmServiceCreatorV3.CreateService(),new MarketingListToRoleConverterV3(),new CRMSecurityProvider.Repository.V3.ContactToUserConverterV3(),
                break;
            }

            case ApiVersion.V4:
            {
                CRMSecurityProvider.Repository.V4.CrmServiceCreatorV4 crmServiceCreatorV3 = new CRMSecurityProvider.Repository.V4.CrmServiceCreatorV4();

                //return new RoleRepositoryV3(crmServiceCreatorV4.CreateService(),new MarketingListToRoleConverterV4(),new CRMSecurityProvider.Repository.V4.ContactToUserConverterV4(),
                break;
            }

            case ApiVersion.V5:
            {
                CrmServiceCreatorV5 crmServiceCreatorV5 = new CrmServiceCreatorV5();

                return(new RoleRepositoryV5(u.Resolve <IOrganizationService>(r)
                                            , u.Resolve <CRMSecurityProvider.Repository.V5.IMarketingListToRoleConverterV5>(r)
                                            , u.Resolve <CRMSecurityProvider.Repository.V5.IContactToUserConverterV5>(r)
                                            , u.Resolve <CRMSecurityProvider.Repository.V5.UserRepositoryV5>(r)
                                            , u.Resolve <ICacheService>(r)));
            }
            }

            return(null); // base.GetRepository(settings);
        }