Этот должен работать
using System;
using CSScriptLibrary;
namespace EmbedCS
{
public class Program
{
public static int[] values = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
public static Random rnd = new Random();
static void Main(string[] args)
{
ExecuteTest();
Console.Read();
}
private static void ExecuteTest()
{
bool result;
var scriptFunction = CSScript.CreateFunc<bool>(@"
bool func() {
int a = EmbedCS.Program.rnd.Next(10);
int b = EmbedCS.Program.rnd.Next(10);
return EmbedCS.Program.values[a] > EmbedCS.Program.values[b];
}
");
result = (bool)scriptFunction();
Console.Read();
}
}
}
Помните, что в C # все так неявно.
ваш func()
не является членом Program
. Поэтому они не могут распознавать поля внутри Program
.
Некоторые динамические языки имеют связывающий контекст (например, binding
в ruby) на уровне языка, поэтому библиотеки могут выполнять чёрную магию. но не в C #.