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;
        }
Exemple #2
0
        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);
        }
Exemple #3
0
 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;
 }
Exemple #5
0
 public PluginProcessProxy(PluginStartupInfo startupInfo, IWpfHost host, ErrorHandlingService errorHandlingService)
 {
     _startupInfo          = startupInfo;
     _host                 = host;
     _errorHandlingService = errorHandlingService;
 }
Exemple #6
0
 public Plugin(IWpfHost host)
 {
     _log = host.GetService<ILog>();
     var startupInfo = host.GetService<PluginStartupInfo>();
     if (startupInfo != null) _parameter = startupInfo.Parameters;
 }