public static void ProxyNamespace(this IExportRegistrationBlock block, ProxyNamespaceConfig config) { // I mark everything as -1 priority so that if another version is registered it overrides these defaults block.Export <ProxyGenerator.ProxyGenerator>().As <IProxyGenerator>().WithPriority(-1).Lifestyle.Singleton().IfNotRegistered(typeof(IProxyGenerator)); block.Export <DefaultNamingConventionService>().As <INamingConventionService>().WithPriority(-1).IfNotRegistered(typeof(INamingConventionService)); block.ExportFactory(() => new DefaultRpcClientProvider(config.Url ?? "ReplaceMe")).As <IRpcHttpClientProvider>().WithPriority(-1).IfNotRegistered(typeof(IRpcHttpClientProvider)); block.Export <JsonMethodObjectWriter>().As <IJsonMethodObjectWriter>().Lifestyle.Singleton().WithPriority(-1).IfNotRegistered(typeof(JsonMethodObjectWriter)); block.Export <RpcProxyService>().As <IRpcProxyService>().WithPriority(-1).Lifestyle.SingletonPerScope().IfNotRegistered(typeof(IRpcProxyService)); var serializerRegistration = block.Export <JsonSerializer>().WithPriority(-1).Lifestyle.Singleton().IfNotRegistered(typeof(JsonSerializer)); if (config.SerializerInit != null) { serializerRegistration.Apply(config.SerializerInit); } if (config.UseDataContext) { block.Export <DataContextHeaderProcessor>().As <IRpcContextHeader>().As <IHeaderProcessor>().WithPriority(-1).Lifestyle.SingletonPerScope().IfNotRegistered(typeof(IHeaderProcessor)); } var compressionPicker = new DefaultMethodCompressionPicker(config.CompressRequest, config.CompressResponse); block.AddMissingExportStrategyProvider(new ProxyStrategyProvider(config.CallByName, compressionPicker, config.Namespaces)); }
private static void SetupProxyInfo(IExportRegistrationBlock block, string url, bool useDataContext, IClientSerializer serializer, INamingConventionService namingConvention, string[] namespaces) { var config = new ProxyNamespaceConfig { Url = url, UseDataContext = useDataContext, Namespaces = namespaces, Serializer = serializer, NamingConvention = namingConvention }; block.AddMissingExportStrategyProvider(new ProxyStrategyProvider(config)); }
/// <summary> /// Export all missing interfaces as factories, this can be filtered /// </summary> /// <param name="block"></param> /// <param name="filter"></param> /// <returns></returns> public static IExportRegistrationBlock ExportInterfaceFactories(this IExportRegistrationBlock block, Func <Type, bool> filter = null) { block.AddMissingExportStrategyProvider(new FactoryStrategyProvider(filter)); return(block); }
/// <summary> /// Proxy a namespace with a specific config /// </summary> /// <param name="block"></param> /// <param name="config"></param> public static void ProxyNamespace(this IExportRegistrationBlock block, ProxyNamespaceConfig config) { RegisterExports(block); block.AddMissingExportStrategyProvider(new ProxyStrategyProvider(config)); }