/// <summary> /// Agrega todos los plugins disponibles de el assembly /// que pasa como argumento y ademas evalua un criterio /// de acceptacion /// </summary> /// <param name="assembly"></param> /// <returns></returns> public PluginLoader Load(Assembly assembly, Predicate <Type> predicate) { PluginAssets .AddRange( assembly .FromContract <IPlugin>() .Where(x => predicate(x)) ); return(this); }
// Checkea si un plugins esta disponible para agregarlos a una lista de instancias private void CheckAvaliable() { if (PluginAssets.Count > 0) { Plugins.AddRange( PluginAssets .Instance <IPlugin>() .Execute(Configure) ); PluginAssets.Clear(); } }
/// <summary> /// Agrega todos los plugins disponibles de el assembly /// que pasa como argumento /// </summary> /// <param name="assembly"></param> /// <returns></returns> public PluginLoader Load(Assembly assembly) { PluginAssets.AddRange(assembly.FromContract <IPlugin>()); return(this); }
/// <summary> /// Agrega un una lista de tipos como plugins /// </summary> /// <param name="types"></param> /// <returns></returns> public PluginLoader Load(IEnumerable <Type> types) { PluginAssets.AddRange(types); return(this); }
/// <summary> /// Agrega un tipo como plugin /// </summary> /// <param name="type"></param> /// <returns></returns> public PluginLoader Load(Type type) { PluginAssets.Add(type); return(this); }
private void Awake() { Instance = this; }