/// <summary> /// Registers matching plugins for the specified <see cref="IPluginConsumer" />. /// </summary> /// <param name="consumer">The <see cref="IPluginConsumer" /> which plugins must be registered for.</param> /// <exception cref="ArgumentNullException"><paramref name="consumer" /> is <see langword="null" />.</exception> public void RegisterPlugins(IPluginConsumer consumer) { if (consumer == null) { throw new ArgumentNullException("consumer"); } object[] consumes = consumer.GetType().GetCustomAttributes( typeof(PluginConsumerAttribute), false); if (consumes.Length == 0) { return; } foreach (PluginBuilder pb in _pluginBuilders) { foreach (PluginConsumerAttribute c in consumes) { if (c.PluginType.IsAssignableFrom(pb.PluginType)) { consumer.ConsumePlugin(pb.CreatePlugin()); break; } } } }
public Task CreateTask() { Task task = (Task)Assembly.CreateInstance( ClassName, true, BindingFlags.Public | BindingFlags.Instance, null, null, CultureInfo.InvariantCulture, null); IPluginConsumer pluginConsumer = task as IPluginConsumer; if (pluginConsumer != null) { TypeFactory.PluginScanner.RegisterPlugins(pluginConsumer); } return(task); }
/// <summary> /// Registers matching plugins for the specified <see cref="IPluginConsumer" />. /// </summary> /// <param name="consumer">The <see cref="IPluginConsumer" /> which plugins must be registered for.</param> /// <exception cref="ArgumentNullException"><paramref name="consumer" /> is <see langword="null" />.</exception> public void RegisterPlugins (IPluginConsumer consumer) { if (consumer == null) { throw new ArgumentNullException ("consumer"); } object[] consumes = consumer.GetType().GetCustomAttributes( typeof(PluginConsumerAttribute), false); if (consumes.Length == 0) { return; } foreach (PluginBuilder pb in _pluginBuilders) { foreach (PluginConsumerAttribute c in consumes) { if (c.PluginType.IsAssignableFrom (pb.PluginType)) { consumer.ConsumePlugin(pb.CreatePlugin()); break; } } } }