Beispiel #1
0
        /// <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;
                    }
                }
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        /// <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;
                    }
                }
            }
        }