我有一个C#类看起来有点像:
public class MyClass
{
private Func<IDataCource, object> processMethod = (ds) =>
{
//default method for the class
}
public Func<IDataCource, object> 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之外)时,在此赋值之后,将运行默认方法。
我知道脚本已运行,因为脚本的其他部分可以正常运行。
我该怎么做?
答案 0 :(得分:11)
我做了一些谷歌搜索,发现了一个关于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)