2012-02-22 9 views
0

IronPythonクラスを反映させてCのメソッドを見つける方法はありますか?私はRubyClassとRubyMethodInfoによってIronRubyのためにこれを行うことができます。 IronPythonにも同様のクラスがありますか?ありがとう。C#からIronPythonクラスのメソッドを見つける

答えて

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__ 
関連する問題