/// <summary> /// Searches for extensions in a particular file and tries to load them. /// </summary> /// <param name="file">The file to load.</param> /// <param name="extension">The extension that the file contains</param> /// <returns>Returns an array of loading results, indicating which extension loaded succesfully and which didn't.</returns> public ExtensionLoadResult[] LoadExtensions(ExtensionLibraryData file) { try { if (LoadedExtensions.FirstOrDefault(x => x.GetType().Assembly.Location.Equals(file.GetAbsolutePath(), StringComparison.OrdinalIgnoreCase)) != null) { throw new InvalidOperationException("The extension library is already loaded."); } var extensionTypes = SearchExtensionTypes(file); if (extensionTypes.Length == 0) { throw new BadImageFormatException(string.Format("No extension classes found in file {0}", file)); } var results = new ExtensionLoadResult[extensionTypes.Length]; for (int i = 0; i < extensionTypes.Length; i++) { results[i] = LoadExtension(extensionTypes[i]); } return(results); } catch (Exception ex) { return(new ExtensionLoadResult[] { new ExtensionLoadResult(file.GetAbsolutePath(), ex) }); } }
public T GetLoadedExtension <T>() where T : LiteExtension { return(LoadedExtensions.FirstOrDefault(x => x is T) as T); }
public LiteExtension GetLoadedExtension(Type extensionType) { return(LoadedExtensions.FirstOrDefault(x => x.GetType() == extensionType)); }