将IronPython方法分配给C#委托

我有一个C#类看起来有点像:

public class MyClass { private Func processMethod = (ds) => { //default method for the class } public Func ProcessMethod { get{ return processMethod; } set{ processMethod = value; } } /* Other details elided */ } 

我有一个IronPython脚本,可以在应用程序中运行

 from MyApp import myObj #instance of MyClass def OtherMethod(ds): if ds.Data.Length > 0 : quot = sum(ds.Data.Real)/sum(ds.Data.Imag) return quot return 0.0 myObj.ProcessMethod = OtherMethod 

但是当调用ProcessMethod (在IronPython之外)时,在此赋值之后,将运行默认方法。

我知道脚本是运行的,因为脚本的其他部分可以工作。

我该怎么做?

我做了一些谷歌搜索,发现了一个关于IronPython黑暗角落的页面: http : //www.voidspace.org.uk/ironpython/dark-corners.shtml

我应该做的是:

 from MyApp import myObj #instance of MyClass import clr clr.AddReference('System.Core') from System import Func def OtherMethod(ds): if ds.Data.Length > 0 : quot = sum(ds.Data.Real)/sum(ds.Data.Imag) return quot return 0.0 myObj.ProcessMethod = Func[IDataSource, object](OtherMethod)