Я следовал инструкциям, приведенным в этом другом посте:
Назначение метода IronPython делегату C #
В этом посте также упоминается другой ресурс на более темномуглы IronPython, который имеет некоторую полезную информацию:
http://www.voidspace.org.uk/ironpython/dark-corners.shtml
Я пытаюсь вызвать метод IronPython из C # в качестве делегата.Моя последняя попытка выглядит следующим образом (с использованием System.Action):
Код IronPython:
delegate = Action[String](self.testErrorDelegate);
#csharp library method call
csharp_library.InvokeAction(delegate);
...
@unittest.skip("dev skipping")
def testErrorDelegate(self,message):
print "error delegate"
print message;
Код библиотеки csharp:
public void InvokeAction(Action<string> listener)
{
Console.WriteLine("BEFORE INVOKE");
listener("DO SOMETHING");
Console.WriteLine("AFTER INVOKE");
}
Моя проблема в том, что я не получаю вывод из python testErrorDelegate при запуске этого.Нет ошибок во время выполнения либо.Я вижу операторы C # Console.WriteLine, но "DO SOMETHING" никогда не печатается.
Любая идея о том, что я мог бы сделать здесь неправильно?
Я также пытался использовать тот же подход приведения непосредственноделегату C # из метода python.Я видел такое же поведение при использовании этого подхода, то есть проверки вызова метода C #, но не возврата вызова кода Python через делегат.
Я использую IronPython 2.7.1 (ipy.exe).