2012-01-23 2 views
0

동적 메서드를 사용하지 않고 이름으로 메서드를 호출하고 인수를 지정할 수있는 방법이 있습니까? (C 번호)IronPython 호출 메서드 이름으로

UPDATE :

'Public 클래스 프로그램 { 공공 정적 무효 메인 (문자열 []에 args) { ScriptEngine의 엔진 Python.CreateEngine =(); ScriptScope scope = engine.CreateScope(); (nuget에서 찾을 수 있습니다) 큰

답변

1

당신은 동적 작업을 수행 할 수 ObjectOperations 클래스를 사용할 수 있습니다, 당신은 ScriptEngine 인스턴스의 인스턴스를 얻을 수 있습니다 :

ScriptEngine engine = ...; 
object result = engine.Operations.InvokeMember(o, "foo", 1, 2, "3"); 
0

오픈 소스 즉석 인터페이스를 작동

 engine.ExecuteFile("script.py", scope); 

     dynamic calculator = scope.GetVariable("Calculator"); 
     dynamic calculatorInstance = engine.Operations.CreateInstance(calculator); 
     dynamic result = engine.Operations.InvokeMember(calculatorInstance, "sample"); 

     Console.ReadKey(); 
    } 
} 

`

class Calculator: def sample(self): return 'test'

는 동적 객체, 파이썬에 reflection-like invocation 작업을 수행하는 방법의 무리가 있습니다 , 루비, C# 등, dlr C# 바인더 코드를 사용합니다.

Impromptu.InvokeMember(o, "foo", 1, 2, "3") 

그러나이 경우 JeffHardy의 대답은 스크립트 엔진으로 이미 작업하고 있기 때문에 가장 좋습니다.

관련 문제