将IronPython方法分配给C#委托

将IronPython方法分配给C#委托,c#,delegates,ironpython,variable-assignment,C#,Delegates,Ironpython,Variable Assignment,我有一个C#类,看起来有点像: public class MyClass { private Func<IDataCource, object> processMethod = (ds) => { //default method for

我有一个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 */
}
但是当调用
ProcessMethod
时(在IronPython之外),在这个赋值之后,默认方法将运行

我知道脚本是运行的,因为脚本的其他部分工作正常


我应该怎么做呢?

我在谷歌上进一步搜索了一下,发现了一个关于IronPython黑暗角落的页面:

我应该做的是:

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)

回复一篇旧文章,但你不需要从某处导入名称IDataSource才能工作吗?是的,如果你能稍微解释一下上面的代码,特别是最后一行,那就太好了。@not2qubit最后一行是分配保存函数
OtherMethod
Func
,在上面的python中定义的属性
ProcessMethod
,该属性在问题中定义。我想,重要的几行是两个额外的导入,以及对
clr.AddReference
的调用,它们允许我使用
Func
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)