protected virtual void ConfigureValidation()
        {
            Container.RegisterType <IValidator <CreateMappingRequest>, CreateMappingRequestValidator>(
                Name,
                new InjectionConstructor(new ResolvedParameter <IValidatorEngine>(Name)));

            Container.RegisterType <IValidator <EnergyTrading.Mdm.Contracts.MdmId>, NexusIdValidator <TMapping> >(Name);

            Container.RegisterType <IValidator <AmendMappingRequest>, AmendMappingRequestValidator <TMapping> >(
                Name, new InjectionConstructor(new ResolvedParameter <IRepository>()));

            Container.RegisterType <IValidator <MappingRequest>, MappingRequestValidator>(Name,
                                                                                          new InjectionConstructor(
                                                                                              new ResolvedParameter <IValidatorEngine>(Name),
                                                                                              new ResolvedParameter <IRepository>()));

            // Factory
            // Do it way as it's too nasty to inject string parameters at r/t with Unity
            var engine = new NamedLocatorValidatorEngine(Name, Container.Resolve <IServiceLocator>());

            Container.RegisterInstance(typeof(IValidatorEngine), Name, engine);

            Container.RegisterType <IValidator <TContract>, TContractValidator>(Name,
                                                                                new InjectionConstructor(
                                                                                    new ResolvedParameter <IValidatorEngine>(Name),
                                                                                    new ResolvedParameter <IRepository>()));
        }
Exemplo n.º 2
0
        protected override void ConfigureValidation()
        {
            var entityType = typeof(TEntity);

            // Basic bits
            if (entityType == typeof(EnergyTrading.MDM.PartyRole) || (entityType.BaseType == typeof(EnergyTrading.MDM.PartyRole)))
            {
                this.Container.RegisterType <IValidator <CreateMappingRequest>, PartyRoleCreateMappingRequestValidator <TEntity, TMapping> >(
                    this.Name,
                    new InjectionConstructor(new ResolvedParameter <IValidatorEngine>(this.Name),
                                             new ResolvedParameter <IRepository>()));

                this.Container.RegisterType <IValidator <EnergyTrading.Mdm.Contracts.MdmId>, PartyRoleNexusIdValidator <TMapping> >(this.Name);

                this.Container.RegisterType <IValidator <AmendMappingRequest>, PartyRoleAmendMappingRequestValidator <TEntity, TMapping> >(
                    this.Name, new InjectionConstructor(new ResolvedParameter <IRepository>()));
            }
            else
            {
                this.Container.RegisterType <IValidator <CreateMappingRequest>, CreateMappingRequestValidator>(
                    this.Name,
                    new InjectionConstructor(new ResolvedParameter <IValidatorEngine>(this.Name)));

                this.Container.RegisterType <IValidator <EnergyTrading.Mdm.Contracts.MdmId>, NexusIdValidator <TMapping> >(this.Name);

                this.Container.RegisterType <IValidator <AmendMappingRequest>, AmendMappingRequestValidator <TMapping> >(
                    this.Name, new InjectionConstructor(new ResolvedParameter <IRepository>()));
            }

            this.Container.RegisterType <IValidator <MappingRequest>, MappingRequestValidator>(this.Name,
                                                                                               new InjectionConstructor(
                                                                                                   new ResolvedParameter <IValidatorEngine>(this.Name),
                                                                                                   new ResolvedParameter <IRepository>()));

            // Factory
            // Do it this way as it's too nasty to inject string parameters at r/t with Unity
            var engine = new NamedLocatorValidatorEngine(this.Name, this.Container.Resolve <IServiceLocator>());

            this.Container.RegisterInstance(typeof(IValidatorEngine), this.Name, engine);

            this.Container.RegisterType <IValidator <TContract>, TContractValidator>(this.Name,
                                                                                     new InjectionConstructor(
                                                                                         new ResolvedParameter <IValidatorEngine>(this.Name),
                                                                                         new ResolvedParameter <IRepository>()));
        }