FunGame-Core/Service/PluginManager.cs
milimoe eb0bb86f38
添加插件接口 (#53)
* 开发插件接口和基类

* 添加构造方法

* 添加PluginManager
2023-09-19 00:15:07 +08:00

40 lines
1.3 KiB
C#

using System.Reflection;
using Milimoe.FunGame.Core.Library.Common.Plugin;
namespace Milimoe.FunGame.Core.Service
{
internal class PluginManager
{
public static Dictionary<string, BasePlugin> LoadPlugin()
{
Dictionary<string, BasePlugin> plugins = new();
string directory = "plugins";
// 获取目录中所有的 DLL 文件路径
string[] dlls = Directory.GetFiles(directory, "*.dll");
foreach (string dll in dlls)
{
try
{
// 加载 DLL
Assembly assembly = Assembly.LoadFrom(dll);
// 遍历 DLL 中的类型
foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => type.IsSubclassOf(typeof(BasePlugin))))
{
BasePlugin instance = Activator.CreateInstance<BasePlugin>();
plugins.Add(instance.Name, instance);
}
}
catch (Exception e)
{
Console.WriteLine($"Failed to load DLL: {dll}");
Console.WriteLine($"Error: {e.Message}");
}
}
return plugins;
}
}
}