private void chklItems_SelectedIndexChanged(object sender, EventArgs e) { IAnalogyExtension analogyExtension = (IAnalogyExtension)chklItems.SelectedItem; if (analogyExtension == null) { return; } lblExtension.Text = $"Name: {analogyExtension.Title}"; lblDescription.Text = $"Description: {analogyExtension.Description}"; lblType.Text = $"Type: {analogyExtension.ExtensionType}"; lblAuthor.Text = $"Author: {analogyExtension.Author} (Mail: {analogyExtension.AuthorMail})"; }
public IEnumerable <IAnalogyExtension> GetExtensions() { if (LoadedExtensions.Any()) { return(LoadedExtensions); } NameValueCollection appSettings = ConfigurationManager.AppSettings; List <string> files = appSettings["AssembliesToLoad"] .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); string dir = Environment.CurrentDirectory; Type isExtension = typeof(IAnalogyExtension); List <Type> res = new List <Type>(); files.AddRange(Directory.GetFiles(dir, "Analogy.*.Extension.dll")); foreach (var file in files) { var fileToload = Path.Combine(dir, file); if (!File.Exists(fileToload)) { Log.LogError("Analogy", $"{file} does not exist. Skipping"); continue; } try { var assm = Assembly.LoadFrom(fileToload).GetTypes() .Where(t => t.GetInterfaces().Any(i => i.Name.Equals(isExtension.Name))).ToList(); res.AddRange(assm); } catch (Exception ex) { Log.LogError("Analogy", $"Error for:{file}: {ex.Message}"); } } foreach (Type type in res) { try { IAnalogyExtension control = (IAnalogyExtension)Activator.CreateInstance(type); LoadedExtensions.Add(control); } catch (Exception exception) { Log.LogError("Analogy", $"Error for:{type.Name}: {exception.Message}"); } } return(LoadedExtensions); }
public void RegisterExtension(IAnalogyExtension extension) { if (extension == null) { return; } registeredExtensions.Add(extension); if (extension.ExtensionType == AnalogyExtensionType.InPlace) { var columns = extension.GetColumnsInfo(); foreach (AnalogyColumnInfo column in columns) { extensionsDataColumns.Add( new Tuple <IAnalogyExtension, AnalogyColumnInfo, int>(extension, column, ColumnIndexes)); ColumnIndexes++; } } }
public int GetIndexForExtension(IAnalogyExtension extension) => extensionsDataColumns.Single(e => e.Item1 == extension).Item3;