동적 메서드를 사용하지 않고 이름으로 메서드를 호출하고 인수를 지정할 수있는 방법이 있습니까? (C 번호)IronPython 호출 메서드 이름으로
UPDATE :
'Public 클래스 프로그램 { 공공 정적 무효 메인 (문자열 []에 args) { ScriptEngine의 엔진 Python.CreateEngine =(); ScriptScope scope = engine.CreateScope(); (nuget에서 찾을 수 있습니다) 큰
동적 메서드를 사용하지 않고 이름으로 메서드를 호출하고 인수를 지정할 수있는 방법이 있습니까? (C 번호)IronPython 호출 메서드 이름으로
UPDATE :
'Public 클래스 프로그램 { 공공 정적 무효 메인 (문자열 []에 args) { ScriptEngine의 엔진 Python.CreateEngine =(); ScriptScope scope = engine.CreateScope(); (nuget에서 찾을 수 있습니다) 큰
당신은 동적 작업을 수행 할 수 ObjectOperations
클래스를 사용할 수 있습니다, 당신은 ScriptEngine
인스턴스의 인스턴스를 얻을 수 있습니다 :
ScriptEngine engine = ...;
object result = engine.Operations.InvokeMember(o, "foo", 1, 2, "3");
오픈 소스 즉석 인터페이스를 작동
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의 대답은 스크립트 엔진으로 이미 작업하고 있기 때문에 가장 좋습니다.