サポートしたい言語に応じていくつかのオプションがあります。 VBScriptはMSScriptControlを使用して実行でき、C#はMicrosoft.CSharpを使用して実行できます。
ここでは、C#スクリプトをデータベースから取り出して実行した簡単な例を示します。これは文字列を取り込むだけなので、引数をコレクションまたは異なるデータ型にしたい場合は調整する必要があることに注意してください。
public class Transform
{
public static string Execute(string firstName)
{
return "Test";
}
}
この1つの注意点は、あなたがクラスに名前を付ける必要があるだろうということである「トランスフォーム」と「実行」以来のたびに実行するための方法:
value = CreateTransformMethodInfo(_script.ScriptBody).Invoke(null, args.Select(x => x.Value).ToArray()); //args would be the arguments in your script
public static MethodInfo CreateTransformMethodInfo(string script)
{
using (var compiler = new CSharpCodeProvider())
{
var parms = new CompilerParameters
{
GenerateExecutable = false,
GenerateInMemory = true,
CompilerOptions = "/optimize",
ReferencedAssemblies = { "System.Core.dll" }
};
return compiler.CompileAssemblyFromSource(parms, script)
.CompiledAssembly.GetType("Transform")
.GetMethod("Execute");
}
}
その後、実際のスクリプトは次のようになります実行するメソッドをコンパイルするときにこれら2つの値を使用することがわかります。 「実行中の」クラスとメソッドがTransform/Executeのままであれば、ヘルパークラスやメソッドに名前を付けることもできます。
ユーザーはどのレベルの言語やプログラミングを理解していますか?言い換えると、あなたのエンジン(およびその言語)がどれくらい前進することを期待していますか? –
スクリプト作成のアドオンは、プログラミングを知っているITスタッフに、より多くの情報を提供します。 Visual Basicはプロジェクトマネージャが望むものです – Atomhax
[Roslynプロジェクト](https://github.com/dotnet/roslyn)を見てください。私はそれがスクリプトホストとして使用できると信じています。それは好きに見える[他の人は既に同様のためにRoslynを使っている](http://stackoverflow.com/questions/11159007/roslyn-visualbasic-scriptengine-doesnt-recognize-hostobject-written-on-c-sharp)。 –