0
有沒有反映IronPython類從C#中找到它的方法的方法?我可以通過RubyClass和RubyMethodInfo爲IronRuby做到這一點。 IronPython有類似的類嗎?謝謝。從C#中查找IronPython類的方法
有沒有反映IronPython類從C#中找到它的方法的方法?我可以通過RubyClass和RubyMethodInfo爲IronRuby做到這一點。 IronPython有類似的類嗎?謝謝。從C#中查找IronPython類的方法
如果您使用的是.NET 4或更高,這很容易,如果你只是讓蟒蛇爲你做它:
static void Main(string[] args)
{
var script = @"
class TestObject:
def Member1(self):
pass
";
var setup = new ScriptRuntimeSetup();
setup.LanguageSetups.Add(Python.CreateLanguageSetup(null));
var runtime = new ScriptRuntime(setup);
var engine = runtime.GetEngineByTypeName(typeof(PythonContext).AssemblyQualifiedName);
var scope = engine.CreateScope();
engine.Execute(script, scope);
foreach (var member in GetMembers(engine, ((dynamic)scope).TestObject))
{
Console.WriteLine(member);
}
Console.ReadKey();
}
確保調整示例腳本註釋塊修復縮進。
然後,只需創建一個可以做檢查了你的任何對象(Python或C#)
static dynamic GetMembers(ScriptEngine engine, dynamic obj)
{
var scope = engine.CreateScope();
scope.SetVariable("objectToInspect", obj);
return engine.Execute("def i(obj): l = dir(obj); l.sort(); return l;\ni(objectToInspect)", scope);
}
這種打印的方法:
Member1
__doc__
__module__