同步操作将从 风起兮/NetCoreFast 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
using Microsoft.Extensions.Logging.Abstractions;using System;using System.Collections.Generic;using System.Linq;using System.Reflection;using System.Runtime.Loader;using System.Text;using System.Threading.Tasks;namespace Plugin{/// <summary>/// 插件帮助类/// </summary>public static class PluginHelper{/// <summary>/// 获取插件加载的信息/// </summary>/// <param name="rootPath"></param>/// <returns></returns>/// <exception cref="ArgumentException"></exception>public static List<IPlugin> GetPlugins(string rootPath){var plugins = new List<IPlugin>();Directory.CreateDirectory(Path.Combine(rootPath, "Plugins"));var pluginsDir = Path.Combine(rootPath, "Plugins");foreach (var dir in Directory.GetDirectories(pluginsDir)){var dirName = Path.GetFileName(dir);var pluginName = dirName + ".dll";var pluginDll = Path.Combine(dir, pluginName);if (!File.Exists(pluginDll)){continue;}var loader = new AssemblyLoader(dir);var types = loader.Load(pluginName);var instances = types.Where(t => typeof(IPlugin).IsAssignableFrom(t) && !t.IsAbstract).Select(x => Activator.CreateInstance(x) as IPlugin);foreach (var i in instances){if (string.IsNullOrEmpty(i.Info().Name)) i.Info().Name = pluginName;if (string.IsNullOrEmpty(i.Info().DisplayName)) i.Info().DisplayName = pluginName;i.Info().Path = dir;var assembly = i.GetType().Assembly;i.Info().AssemblyName = assembly.GetName().Name;i.Info().Version = assembly.GetName().Version?.ToString();i.Info().Assembly = assembly;plugins.Add(i);}}return plugins;}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。