将IronPython方法分配给C#委托

时间:2010-10-18 11:26:16

标签: c# delegates ironpython variable-assignment

我有一个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之外)时,在此赋值之后,将运行默认方法。

我知道脚本已运行,因为脚本的其他部分可以正常运行。

我该怎么做?

1 个答案:

答案 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)