有没有办法反映IronPython类从C#中找到它的方法?我可以通过RubyClass和RubyMethodInfo为IronRuby做这个。 IronPython有类似的课程吗?感谢。
答案 0 :(得分:0)
如果您使用的是.NET 4或更高版本,如果您让python为您执行此操作,这很容易:
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__