public void LoadExtension(string fileName) { if (!File.Exists(fileName)) { return; } _fileName = fileName; Assembly assembly = LoadAssembly(fileName); if (!_loadedAssemblyList.ContainsKey(assembly.FullName)) { _loadedAssemblyList.Add(assembly.FullName, assembly); } foreach (Type t in assembly.GetTypes()) { if (t.GetInterface("IExtension") != null) { IExtension extension = (IExtension)assembly.CreateInstance(t.FullName); if (extension != null && ExtensionManager.GetInstance().GetExtensionByName(extension.GetExtensionName()) == null && !_extensionList.ContainsKey(extension.GetExtensionName())) { _extensionList.Add(extension.GetExtensionName(), extension); EventRouter.GetInstance().FireEvent("Extension_Loaded", (object)extension, null); Console.WriteLine( $"[Info - {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}/ExtensionManager]:{extension.GetExtensionName()} has been loaded"); } } } }
public static string GetExtensionCachePath(IExtension extension) { string path = GetRootPath() + "/cache/" + extension.GetExtensionName().Replace(" ", "_") + "/"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } return(path); }
public static string GetRelativePath(IExtension extension, string fileName, bool operateCache = false) { return($"@{extension.GetExtensionName()}:{(operateCache ? "cache" : "data")}|{fileName}"); }