private void RegisterClientServices() { if (!RegisterSingletonService <IServiceStatusManageFactory, ServiceStatusManageFactory>()) { return; } AddStartUpTask <ServiceStatusManageStartup>(); AddStartUpTask <RemotingClientStartup>(); RegisterSingletonService <ClientDefaultInterceptor>(); RegisterSingletonService <IClientFactory, ClientFactory>(); RegisterSingletonService <IRemotingInvoke, RemotingInvoke>(); RegisterSingletonService <ICircuitBreaker, PollyCircuitBreaker>(); var types = ReflectHelper.GetDependencyTypes(); var services = types.Where(t => t.IsInterface && typeof(IService).IsAssignableFrom(t)).ToList(); //Generate client proxy var proxies = ProxyGenerator.GenerateProxy(services); foreach (var service in services) { //Register proxy class,For support meta data using scope. RegisterScopedService(service, proxies.FirstOrDefault(p => service.IsAssignableFrom(p))); } RegisterInterceptors(); }
public void UpdateProxyTemplate(ProxyTemplateChangedMessage message) { if (Templates.SelectedItem == null) { return; } var selectedTemplate = ((TemplateModel)Templates.SelectedItem); var properties = StoredProxyProperties.Where(x => x.Name != null).ToDictionary(x => x.Name, x => x.Value); //this stuff generates the real proxy image, maybe we'll need to keep it in for more accurate image var proxy = ProxyGenerator.GenerateProxy(_proxydef.BlockManager, selectedTemplate._def, properties, null); using (var ms = new MemoryStream()) { proxy.Save(ms, System.Drawing.Imaging.ImageFormat.Png); ms.Position = 0; ProxyImage = new BitmapImage(); ProxyImage.BeginInit(); ProxyImage.CacheOption = BitmapCacheOption.OnLoad; ProxyImage.StreamSource = ms; ProxyImage.EndInit(); } proxy.Dispose(); BaseImage = new BitmapImage(new Uri(selectedTemplate._def.src)); ActiveOverlayLayers = new ObservableCollection <OverlayBlockDefinitionItemModel>( selectedTemplate._def.GetOverLayBlocks(properties).Where(x => x.SpecialBlock == null).Select( x => (OverlayBlockDefinitionItemModel)OverlayBlocks.First(y => ((OverlayBlockDefinitionItemModel)y).Name == x.Block))); ActiveTextLayers = new ObservableCollection <ProxyTextLinkItemModel>( selectedTemplate._def.GetTextBlocks(properties).Select( x => new ProxyTextLinkItemModel(x))); RaisePropertyChanged("BaseImage"); RaisePropertyChanged("BaseWidth"); RaisePropertyChanged("BaseHeight"); RaisePropertyChanged(""); }