示例#1
0
        public void Unload()
        {
            if (_pluginCallbacks != null)
            {
                _pluginCallbacks.Unload();
            }

            _pluginCallbacks = null;
        }
示例#2
0
        public bool Load(string fileName)
        {
            if (File.Exists(fileName))
            {
                // TODO: Load plugin
                var assembly = Assembly.LoadFile(fileName);
                if (assembly != null)
                {
                    var types = assembly.GetTypes().Where(type => typeof(IServerPluginCallbacks).IsAssignableFrom(type));
                    foreach (var type in types)
                    {
                        _pluginCallbacks = (IServerPluginCallbacks)Activator.CreateInstance(type);
                        if (_pluginCallbacks == null)
                        {
                            Console.WriteLine("Could not get IServerPluginCallbacks interface from plugin \"{0}\"", fileName);
                            return(false);
                        }
                    }

                    if (!_pluginCallbacks.Load())
                    {
                        Console.WriteLine("Failed to load plugin \"{0}\"!", fileName);
                        return(false);
                    }

                    _pluginName = _pluginCallbacks.GetPluginDescription();
                }
            }
            else
            {
                Console.WriteLine("Unable to load plugin \"{0}\"!", fileName);
                return(false);
            }

            return(true);
        }
示例#3
0
 public Plugin()
 {
     _pluginDisabled  = false;
     _pluginName      = string.Empty;
     _pluginCallbacks = null;
 }