public IRemotePlugin LoadPlugin(IWpfHost host, PluginStartupInfo startupInfo) { _host = host; _log.Info(String.Format("LoadPlugin('{0}','{1}')", startupInfo.AssemblyName, startupInfo.MainClass)); new ProcessMonitor(Dispose).Start(_host.HostProcessId); Func<PluginStartupInfo, object> createOnUiThread = LoadPluginOnUiThread; var result = _dispatcher.Invoke(createOnUiThread, startupInfo); _log.Debug("Returning plugin object to host"); if (result is Exception) { _log.Error("Error loading plugin", (Exception)result); throw new TargetInvocationException((Exception)result); } return (IRemotePlugin)result; }
public static object CreatePlugin(string assemblyName, string typeName, IWpfHost host) { var assembly = Assembly.Load(assemblyName); var type = assembly.GetType(typeName); if (type == null) throw new InvalidOperationException("Could not find type " + typeName + " in assembly " + assemblyName); SetupWpfApplication(assembly); var hostConstructor = type.GetConstructor(new[] {typeof(IWpfHost)}); if (hostConstructor != null) { return hostConstructor.Invoke(new object[]{host}); } var defaultConstructor = type.GetConstructor(new Type[0]); if (defaultConstructor == null) { var message = String.Format("Cannot create an instance of {0}. Either a public default constructor, or a public constructor taking IWpfHost must be defined", typeName); throw new InvalidOperationException(message); } return defaultConstructor.Invoke(null); }
public UnoWpfRenderer(IWpfHost host) { _hostControl = host as WpfControl ?? throw new InvalidOperationException("Host should be a WPF control"); _host = host; }
public PluginProcessProxy(PluginStartupInfo startupInfo, IWpfHost host, ErrorHandlingService errorHandlingService) { _startupInfo = startupInfo; _host = host; _errorHandlingService = errorHandlingService; }
public Plugin(IWpfHost host) { _log = host.GetService<ILog>(); var startupInfo = host.GetService<PluginStartupInfo>(); if (startupInfo != null) _parameter = startupInfo.Parameters; }