プログラムのプラグインをサポートしたい
目標は、プラグインフォルダー内のファイルをコンパイルしていくつかのメソッドを起動することですが、動作させることができます
CSScriptLibrary を使用した現在の進行状況:
public static void run(String fileName, String methodName, params Object[] parameters)
{
FileInfo f = new FileInfo(fileName);
try
{
CSScript.Evaluator.Reset();
CSScript.Evaluator.ReferenceAssembliesFromCode(File.ReadAllText(Environment.CurrentDirectory + @"\addons\ResourceManager.cs"));
dynamic block = CSScript.Evaluator.LoadCode(File.ReadAllText(f.FullName));
block.Load(parameters); // <---- Exception
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
}
}
しかし、それは例外をスローします:
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: The best overloaded method match for 'WAddon.Load(Weird.ResourceManager)' has some invalid arguments AddonManager.cs:line 28
アドオンファイル:
using System;
using Weird;
class WAddon
{
public static void Load(ResourceManager resManager)
{
resManager.add("var", "0");
}
}
resmanagerクラスが重要だとは思わないとにかく、そのインスタンスを渡して関数をロードしたいので、元のプログラムの内容を変更できます