У меня есть следующий код IronPython.
class Hello:
def __init__(self):
pass
def add(self, x, y):
return (x+y)
Я мог бы сделать следующий код C# для использования кода IronPython.
static void Main()
{
string source = GetSourceCode("ipyth.py");
Engine engine = new Engine(source);
ObjectOperations ops = engine._engine.Operations;
bool result = engine.Execute();
if (!result)
{
Console.WriteLine("Executing Python code failed!");
}
else
{
object klass = engine._scope.GetVariable("Hello");
object instance = ops.Invoke(klass);
object method = ops.GetMember(instance, "add");
int res = (int) ops.Invoke(method, 10, 20);
Console.WriteLine(res);
}
Console.WriteLine("Press any key to exit.");
Console.ReadLine();
}
Могу ли я упростить этот код с помощью динамической DLR?
В книге IronPython In Action есть простое объяснение этого в ‹15.4.4 Будущее взаимодействия с динамическими объектами ›, но я не смог найти несколько примеров.
ДОБАВЛЕН
Прилагаю исходный/баточный файл программы. Program.cs runme.bat