先日、C#スクリプトを試して見ました。
これを使用すればC#プログラムからスクリプトを実行できるようになります。
C#スクリプトの導入方法は他のサイトにも記載されているので置いといて、どのように実装するかだけ。
<実装例>
private int Test(string text) {
var args = new TestArgs { Text = text }; ・・・(1)
var script = CSharpScript.Create(
”Value = Text.Length * 2;” ・・・(2)
, ScriptOptions.Default, typeof(TestArgs));
var scriptState = script.RunAsync(args);
scriptState.Wait();
return args.Value;
}
public class TestArgs {
public int Value { get; set; }
public string Text { get; set; }
}
上記の(2)の個所がC#スクリプトのプログラム部分です。
上記は1行だけですが複数行のプログラムを記載できます。
おこなっている内容も特に意味が無く、Textプロパティの文字数を2倍して、Valueプロパティに代入しているだけです。
この計算結果を呼び出し元のC#側で使用することができます。
(1)でnewしているTestArgsクラスは、C#スクリプトへの入力と出力に使用するクラスで、上記ではTextプロパティを入力に、Valueプロパティを出力に使用しています。
上記の簡単な実装でスクリプトを実行できるのは非常に面白いです。
ですが、実際にどのような用途にこの機能を使うかは悩むところです。
思いつくのは、マクロとして使ったり、動的に演算式や判定条件を変更するなどでしょうか。
スクリプトなので速度はC#で実装するよりも遅いですし、もちろんビルド時に静的コードチェックもされないですし、よく考えて使わないと痛い目に遭うかも知れません。