public void LoadServices() { var encodeNames = PluginServiceProvider.GetServiceNamesByType("Encode"); foreach (var name in encodeNames) { var item = new ListItem { Text = name, Tag = PluginServiceProvider.GetService(name) }; _encodeItem.Add(item); } var convertName = PluginServiceProvider.GetServiceNamesByType("Decode"); foreach (var name in convertName) { var item = new ListItem { Text = name, Tag = PluginServiceProvider.GetService(name) }; _decodeItem.Add(item); } }
public void LoadServices() { var names = PluginServiceProvider.GetServiceNames(); foreach (var name in names) { var item = new ListItem { Text = name, Tag = PluginServiceProvider.GetServiceStore(name) }; _comboBoxServices.Items.Add(item); } }
public static void RegisterService(IPlugin plugin) { PluginServiceProvider.RegisterService(plugin, "FromBase64", "Decode", Base64_Decode); PluginServiceProvider.RegisterService(plugin, "FromUrlEncode", "Decode", FromUrlEncode); PluginServiceProvider.RegisterService(plugin, "FromHex", "Decode", FromHex); PluginServiceProvider.RegisterService(plugin, "ToBase64", "Encode", Base64_Encode); PluginServiceProvider.RegisterService(plugin, "ToMd5_16", "Encode", ToMd5_16); PluginServiceProvider.RegisterService(plugin, "ToMd5_32", "Encode", ToMd5_32); PluginServiceProvider.RegisterService(plugin, "ToSha1", "Encode", ToSha1); PluginServiceProvider.RegisterService(plugin, "ToUrlEncode", "Encode", ToUrlEncode); PluginServiceProvider.RegisterService(plugin, "ToUrlEncodeAll", "Encode", ToUrlEncodeAll); PluginServiceProvider.RegisterService(plugin, "ToHex", "Encode", ToHex); }
private void LoadServicesInUi() { var serviceNames = PluginServiceProvider.GetServiceNames().ToList(); if (serviceNames.Any()) { foreach (var name in serviceNames) { var serviceType = PluginServiceProvider.GetServiceTypeName(name); var provider = PluginServiceProvider.GetServiceProvider(name); var text = string.Format( "[Provider:{0}] [Type:{1}] {2}", provider != null ? provider.PluginInfo.Name : "", serviceType, name); _servicesMenuItem.Items.Add(new ButtonMenuItem { Text = text }); } } }
void Init() { var label1 = new Label { Text = "Welcome to", Font = new Font(FontFamilies.Monospace, 30) }; var labelTitle = new Label { Text = "Altman3", Font = new Font(FontFamilies.Monospace, 60) }; var layout = new PixelLayout(); layout.Add(label1, new Point(70, 50)); layout.Add(labelTitle, new Point(100, 120)); var logo = PluginServiceProvider.GetService("ToFingerBinary"); if (logo != null) { var rnd = new Random(); var par = new PluginParameter(); par.AddParameter("str", rnd.Next(1, 1023)); var ret = logo(par); var tmp = new Label { Text = ret, Font = new Font(FontFamilies.Monospace, 10) }; layout.Add(tmp, new Point(300, 220)); } Content = layout; }
private PluginResponseMessage RegisterPlugin( PluginMessage message, IAssemblyLoadContext assemblyLoadContext) { var registerData = message.Data.ToObject <PluginRegisterData>(); var response = new RegisterPluginResponseMessage { MessageName = RegisterPluginMessageName }; var pluginId = message.PluginId; var registerDataTypeCacheKey = registerData.GetFullTypeCacheKey(); IPlugin plugin; Type pluginType; if (!_pluginTypeCache.TryGetValue(registerDataTypeCacheKey, out pluginType)) { try { Assembly assembly; if (!_assemblyCache.TryGetValue(registerData.AssemblyName, out assembly)) { assembly = assemblyLoadContext.Load(registerData.AssemblyName); } pluginType = assembly.GetType(registerData.TypeName); } catch (Exception exception) { response.Error = exception.Message; return(response); } } if (pluginType == null) { response.Error = Resources.FormatPlugin_TypeCouldNotBeLocatedInAssembly( pluginId, registerData.TypeName, registerData.AssemblyName); return(response); } else { // We build out a custom plugin service provider to add a PluginMessageBroker and // IAssemblyLoadContext to the potential services that can be used to construct an IPlugin. var pluginServiceProvider = new PluginServiceProvider( _hostServices, messageBroker: new PluginMessageBroker(pluginId, _sendMessageMethod)); plugin = ActivatorUtilities.CreateInstance(pluginServiceProvider, pluginType) as IPlugin; if (plugin == null) { response.Error = Resources.FormatPlugin_CannotProcessMessageInvalidPluginType( pluginId, pluginType.FullName, typeof(IPlugin).FullName); return(response); } } Debug.Assert(plugin != null); int resolvedProtocol; if (!registerData.Protocol.HasValue) { // Protocol wasn't provided, use the plugin's protocol. resolvedProtocol = plugin.Protocol; } else { // Client and plugin protocols are max values; meaning support is <= value. The goal in this method is // to return the maximum protocol supported by both parties (client and plugin). resolvedProtocol = Math.Min(registerData.Protocol.Value, plugin.Protocol); // Update the plugins protocol to be the resolved protocol. plugin.Protocol = resolvedProtocol; } _registeredPlugins[pluginId] = plugin; response.Protocol = resolvedProtocol; return(response); }
private PluginResponseMessage RegisterPlugin( PluginMessage message, IAssemblyLoadContext assemblyLoadContext) { var registerData = message.Data.ToObject<PluginRegisterData>(); var response = new RegisterPluginResponseMessage { MessageName = RegisterPluginMessageName }; var pluginId = message.PluginId; var registerDataTypeCacheKey = registerData.GetFullTypeCacheKey(); IPlugin plugin; Type pluginType; if (!_pluginTypeCache.TryGetValue(registerDataTypeCacheKey, out pluginType)) { try { Assembly assembly; if (!_assemblyCache.TryGetValue(registerData.AssemblyName, out assembly)) { assembly = assemblyLoadContext.Load(registerData.AssemblyName); } pluginType = assembly.GetType(registerData.TypeName); } catch (Exception exception) { response.Error = exception.Message; return response; } } if (pluginType == null) { response.Error = Resources.FormatPlugin_TypeCouldNotBeLocatedInAssembly( pluginId, registerData.TypeName, registerData.AssemblyName); return response; } else { // We build out a custom plugin service provider to add a PluginMessageBroker and // IAssemblyLoadContext to the potential services that can be used to construct an IPlugin. var pluginServiceProvider = new PluginServiceProvider( _hostServices, messageBroker: new PluginMessageBroker(pluginId, _sendMessageMethod)); plugin = ActivatorUtilities.CreateInstance(pluginServiceProvider, pluginType) as IPlugin; if (plugin == null) { response.Error = Resources.FormatPlugin_CannotProcessMessageInvalidPluginType( pluginId, pluginType.FullName, typeof(IPlugin).FullName); return response; } } Debug.Assert(plugin != null); int resolvedProtocol; if (!registerData.Protocol.HasValue) { // Protocol wasn't provided, use the plugin's protocol. resolvedProtocol = plugin.Protocol; } else { // Client and plugin protocols are max values; meaning support is <= value. The goal in this method is // to return the maximum protocol supported by both parties (client and plugin). resolvedProtocol = Math.Min(registerData.Protocol.Value, plugin.Protocol); // Update the plugins protocol to be the resolved protocol. plugin.Protocol = resolvedProtocol; } _registeredPlugins[pluginId] = plugin; response.Protocol = resolvedProtocol; return response; }
private PluginResponseMessage RegisterPlugin( PluginMessage message, IAssemblyLoadContext assemblyLoadContext) { var registerData = message.Data.ToObject<PluginRegisterData>(); var response = new PluginResponseMessage { MessageName = RegisterPluginMessageName }; var pluginId = message.PluginId; var registerDataTypeCacheKey = registerData.GetFullTypeCacheKey(); IPlugin plugin; Type pluginType; if (!_pluginTypeCache.TryGetValue(registerDataTypeCacheKey, out pluginType)) { try { Assembly assembly; if (!_assemblyCache.TryGetValue(registerData.AssemblyName, out assembly)) { assembly = assemblyLoadContext.Load(registerData.AssemblyName); } pluginType = assembly.GetType(registerData.TypeName); } catch (Exception exception) { response.Error = exception.Message; return response; } } if (pluginType == null) { response.Error = Resources.FormatPlugin_TypeCouldNotBeLocatedInAssembly( pluginId, registerData.TypeName, registerData.AssemblyName); return response; } else { // We build out a custom plugin service provider to add a PluginMessageBroker and // IAssemblyLoadContext to the potential services that can be used to construct an IPlugin. var pluginServiceProvider = new PluginServiceProvider( _hostServices, messageBroker: new PluginMessageBroker(pluginId, _sendMessageMethod)); plugin = ActivatorUtilities.CreateInstance(pluginServiceProvider, pluginType) as IPlugin; if (plugin == null) { response.Error = Resources.FormatPlugin_CannotProcessMessageInvalidPluginType( pluginId, pluginType.FullName, typeof(IPlugin).FullName); return response; } } Debug.Assert(plugin != null); _registeredPlugins[pluginId] = plugin; response.Success = true; return response; }
private PluginResponseMessage RegisterPlugin( PluginMessage message, IAssemblyLoadContext assemblyLoadContext) { var registerData = message.Data.ToObject <PluginRegisterData>(); var response = new PluginResponseMessage { MessageName = RegisterPluginMessageName }; var pluginId = message.PluginId; var registerDataTypeCacheKey = registerData.GetFullTypeCacheKey(); IPlugin plugin; Type pluginType; if (!_pluginTypeCache.TryGetValue(registerDataTypeCacheKey, out pluginType)) { try { Assembly assembly; if (!_assemblyCache.TryGetValue(registerData.AssemblyName, out assembly)) { assembly = assemblyLoadContext.Load(registerData.AssemblyName); } pluginType = assembly.GetType(registerData.TypeName); } catch (Exception exception) { response.Error = exception.Message; return(response); } } if (pluginType == null) { response.Error = Resources.FormatPlugin_TypeCouldNotBeLocatedInAssembly( pluginId, registerData.TypeName, registerData.AssemblyName); return(response); } else { // We build out a custom plugin service provider to add a PluginMessageBroker and // IAssemblyLoadContext to the potential services that can be used to construct an IPlugin. var pluginServiceProvider = new PluginServiceProvider( _hostServices, messageBroker: new PluginMessageBroker(pluginId, _sendMessageMethod)); plugin = ActivatorUtilities.CreateInstance(pluginServiceProvider, pluginType) as IPlugin; if (plugin == null) { response.Error = Resources.FormatPlugin_CannotProcessMessageInvalidPluginType( pluginId, pluginType.FullName, typeof(IPlugin).FullName); return(response); } } Debug.Assert(plugin != null); _registeredPlugins[pluginId] = plugin; response.Success = true; return(response); }