Example #1
0
        public IPlugin LoadPlugin(PluginDescriptor descriptor)
        {
            if (descriptor == null)
            {
                throw new ArgumentNullException("descriptor");
            }
            string descriptorPath = Paths.GetDirNameOrPathRoot(descriptor.PluginDescriptorFileName);
            string fileName       = Path.Combine(descriptorPath, descriptor.PluginFileName);

            Assembly assembly;

            if (!assemblyCache.TryGetValue(fileName, out assembly))
            {
                assembly = Assembly.LoadFrom(fileName);
            }

            IPlugin pluginInstance = (IPlugin)assembly.CreateInstance(descriptor.PluginTypeName);

            if (pluginInstance == null)
            {
                throw new Exception("Could not find given plugin type");
            }
            return(pluginInstance);
        }