コード例 #1
0
ファイル: ExtensionProxy.cs プロジェクト: hxx960701/Fishery
        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");
                    }
                }
            }
        }
コード例 #2
0
        public static string GetExtensionCachePath(IExtension extension)
        {
            string path = GetRootPath() + "/cache/" + extension.GetExtensionName().Replace(" ", "_") + "/";

            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            return(path);
        }
コード例 #3
0
 public static string GetRelativePath(IExtension extension, string fileName, bool operateCache = false)
 {
     return($"@{extension.GetExtensionName()}:{(operateCache ? "cache" : "data")}|{fileName}");
 }