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>())); }
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>())); }