1
首先,我是python新手,在.NET上有点生疏,所以如果听起来 太明显,那么请耐心等待。 假设下面的python类;获取和存储python类的方法
class foo1(object):
def bar1(self):
print "bar1 called."
def bar2(self):
print "bar2 called."
class foo2 ..... same as above
我想不想找个存储类方法,并希望调用它们我自己的选择。这的对象是什么,我想出了。
ObjectOperations ops = engine.Operations;
IList<string> members = ops.GetMemberNames(scope);
foreach(string member in members)
{
if(member.StartsWith("foo"))
{
dynamic klass= scope.GetVariable(member);
dynamic instance= klass();
//for brevity I am skipping the enumeration of
//function names here.
dynamic func = ops.GetMember(instance, "bar1");//and store it somewhere
Action act = ops.ConvertTo<Action>(func); //This part is not really necessary
}
}
我想要做的就是在一个实例创建晚些时候调用(类型IronPython.Runtime.Method的)的FUNC什么。从我从IronPython收集的资料中可以看出,实例在创建时被设置为石头,而且我无法更改它。是否有办法实现此目的?我也不确定在什么情况下(范围??)运行该功能,或者我不应该担心这一切。
ObjectOperations确实有一个名为MemberInvoke的方法,它接受一个对象和成员名称,但我宁愿使用MethodInfo.Invoke类型的调用来兼顾样式和性能方面的考虑。
任何指针将不胜感激。
P.S.我正在使用IronPython 2.7和.Net4.0 ..
这很容易。我以为我需要事先创建一个实例。谢谢 – 2011-05-12 13:32:35