Exemple #1
0
        public IColourExtractionPlugin SetColourExtractionPlugin(Type pluginType)
        {
            IColourExtractionPlugin plugin = Activator.CreateInstance(pluginType, new object[] { Table.Database.AddTable(), Logger, Runtime }) as IColourExtractionPlugin;

            this.ColourExtractionPlugin = plugin;
            SaveToStorage(() => this.ColourExtractionPlugin, this.ColourExtractionPlugin);
            return(plugin);
        }
 /// <summary>
 /// Trys to get a configured Colour Extraction Plugin (no specific ordering),
 /// failing that it will attempt to create a new Colour Extraction Plugin from the available types (no specific ordering)
 /// </summary>
 /// <returns>A list with one Colour Extraction Plugin </returns>
 /// <exception cref="ArgumentNullException"></exception>
 public SerializableInterfaceList<IColourExtractionPlugin> DefaultColourExtractionPlugins()
 {
     SerializableInterfaceList<IColourExtractionPlugin> colourExtractionPlugins = new SerializableInterfaceList<IColourExtractionPlugin>();
     Type type = AvailableColourExtractionPlugins.FirstOrDefault();
     if (type == null)
     {
         AfterglowRuntime.Logger.Fatal("No IColourExtractionPlugin's have been loaded, please check the install and try again");
     }
     else
     {
         IColourExtractionPlugin plugin = Activator.CreateInstance(type) as IColourExtractionPlugin;
         plugin.Id = this.GetNewId<IColourExtractionPlugin>();
         colourExtractionPlugins.Add(plugin);
     }
     return colourExtractionPlugins;
 }
Exemple #3
0
        private IList <IColourExtractionPlugin> GetLookupValues()
        {
            PropertyInfo         prop            = _profile.GetType().GetProperties().Where(p => p.Name == "ColourExtractionPlugin").FirstOrDefault();
            ConfigTableAttribute configAttribute = Attribute.GetCustomAttribute(prop, typeof(ConfigTableAttribute)) as ConfigTableAttribute;

            Type pluginType   = _profile.GetType();
            Type propertyType = prop.PropertyType;

            IEnumerable <Type> availableValues = null;

            if (configAttribute.RetrieveValuesFrom != null)
            {
                var member = pluginType.GetMember(configAttribute.RetrieveValuesFrom);
                if (member.Length > 0)
                {
                    if (member[0].MemberType == MemberTypes.Method)
                    {
                        MethodInfo mi = pluginType.GetMethod(configAttribute.RetrieveValuesFrom);

                        var propertyValue = mi.Invoke(_profile, null);

                        availableValues = propertyValue as IEnumerable <Type>;
                    }
                }
            }

            List <IColourExtractionPlugin> result = new List <IColourExtractionPlugin>();

            foreach (Type item in availableValues)
            {
                IColourExtractionPlugin plugin = Activator.CreateInstance(item) as IColourExtractionPlugin;
                result.Add(plugin);
            }

            return(result);
        }