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; }
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); }