private void RegisterRequestAndResponseTypes() { foreach (var assembly in requestsAndResponseAssemblies) { KnownTypeProvider.RegisterDerivedTypesOf <Request>(assembly); KnownTypeProvider.RegisterDerivedTypesOf <Response>(assembly); } }
/// <summary> /// Configures the agatha. /// </summary> /// <param name="appContainer">The app container.</param> protected virtual void ConfigureAgatha(IContainer appContainer) { var structureMapContainer = new Agatha.StructureMap.Container(appContainer); IoC.Container = structureMapContainer; var assemblyLocator = appContainer.GetInstance <IAssemblyLocator> (); var infrastructureAssemblies = assemblyLocator.LocateInfrastructureAssemblies(); var genericsToApply = new Dictionary <Type, Type> (); foreach (var infrastructureAssembly in infrastructureAssemblies) { var genericsToApplyInAssebmly = KnownTypeHelper.GetGenerics(infrastructureAssembly); foreach (KeyValuePair <Type, Type> keyValuePair in genericsToApplyInAssebmly) { genericsToApply.Add(keyValuePair.Key, keyValuePair.Value); } } var serviceLayerConfiguration = new ServiceLayerConfiguration(structureMapContainer); var serviceAssemblies = assemblyLocator.LocateWebServiceAssemblies(); foreach (var assembly in serviceAssemblies) { var assemblyRef = assembly; Logger.Debug("Registering Requests, Responses, Handlers, and Dtos for Assembly: {0}", assemblyRef); KnownTypeHelper.RegisterNonGenericRequestsAndResponses(assembly); serviceLayerConfiguration.AddRequestHandlerAssembly(assembly); KnownTypeProvider.RegisterDerivedTypesOf <AbstractDataTransferObject> (assembly.GetTypes().Where(t => !t.IsGenericType)); KnownTypeHelper.RegisterGenerics(genericsToApply, assembly); } KnownTypeProvider.Register <TerminologyConcept> (); KnownTypeProvider.Register <TerminologyProperty> (); KnownTypeProvider.Register <TerminologyPropertyType> (); KnownTypeProvider.Register <TerminologyVocabulary> (); // register the agatha interceptors serviceLayerConfiguration.RegisterRequestHandlerInterceptor <SecurityInterceptor>(); serviceLayerConfiguration.RegisterRequestHandlerInterceptor <RuleViolationEventInterceptor> (); serviceLayerConfiguration.RequestProcessorImplementation = typeof(Service.PerformanceLoggingRequestProcessor); serviceLayerConfiguration.Initialize(); RegisterIRequestHandlerOfGetRequestDtoByKey(appContainer); CallKnownTypeProviders(appContainer); }
public static void RegisterWCFAgathaTypes(Assembly assembly) { // Taken from - http://www.xavierdecoster.com/post/2010/05/07/Automate-WCF-KnownTypes-in-a-3-Tier-Silverlight-application.aspx // get all public types var publicTypes = assembly.GetExportedTypes(); // get all data contracts var dataContracts = publicTypes.Where(type => type.GetCustomAttributes(typeof(DataContractAttribute), true).Length > 0); // register all data contracts to WCF (using Agatha) // notice that we have to provide a base type to Agatha's KnownTypeProvider (it does not support interfaces...), so what the heck, let's use object :-) KnownTypeProvider.RegisterDerivedTypesOf <object>(dataContracts); }
private void RegisterServices() { var genericsToApply = KnownTypeHelper.GetGenerics(typeof(Const).Assembly); KnownTypeHelper.RegisterNonGenericRequestsAndResponses(typeof(PatientModule).Assembly); KnownTypeHelper.RegisterGenerics(genericsToApply, typeof(PatientModule).Assembly); KnownTypeHelper.RegisterKnownTypesFromIKnownTypeProviders(typeof(PatientModule).Assembly); KnownTypeProvider.RegisterDerivedTypesOf <AbstractDataTransferObject>(typeof(PatientModule).Assembly.GetTypes().Where(t => !t.IsGenericType)); _container.RegisterType <ITerminologyProxy, TerminologyProxy> (); _container.RegisterType <ICdsAlertService, CdsAlertService> (); _container.RegisterType <IPatientAccessService, PatientAccessService> (); _accessControlManager.RegisterPermissionDescriptor( new ClientPermissionDescriptor()); _metadataService.LoadMetadataForModule(this); }
/// <summary> /// Configures agatha. /// </summary> /// <param name="appContainer">The app container.</param> protected virtual void ConfigureAgatha(IContainer appContainer) { var structureMapContainer = new Agatha.StructureMap.Container(appContainer); Agatha.Common.InversionOfControl.IoC.Container = structureMapContainer; var assemblyLocator = appContainer.GetInstance <IAssemblyLocator> (); var infrastructureAssemblies = assemblyLocator.LocateInfrastructureAssemblies(); var genericsToApply = new Dictionary <Type, Type> (); foreach (var infrastructureAssembly in infrastructureAssemblies) { var genericsToApplyInAssebmly = KnownTypeHelper.GetGenerics(infrastructureAssembly); foreach (var keyValuePair in genericsToApplyInAssebmly) { genericsToApply.Add(keyValuePair.Key, keyValuePair.Value); } } var serviceAssemblies = assemblyLocator.LocateWebServiceAssemblies(); foreach (var assembly in serviceAssemblies) { KnownTypeHelper.RegisterNonGenericRequestsAndResponses(assembly); KnownTypeProvider.RegisterDerivedTypesOf <AbstractDataTransferObject> (assembly.GetTypes().Where(t => !t.IsGenericType)); KnownTypeHelper.RegisterGenerics(genericsToApply, assembly); } var clientConfiguration = new ClientConfiguration(structureMapContainer) { AsyncRequestDispatcherImplementation = typeof(AsyncRequestDispatcher) }; clientConfiguration.AddRequestAndResponseAssembly(typeof(GetLookupValuesRequest).Assembly); clientConfiguration.RequestProcessorImplementation = typeof(CustomSyncRequestProcessorProxy); clientConfiguration.Initialize(); }
static PhoneAutomationService() { KnownTypeProvider.RegisterDerivedTypesOf <CommandBase>(typeof(CommandBase).Assembly); KnownTypeProvider.RegisterDerivedTypesOf <ResultBase>(typeof(ResultBase).Assembly); }