gpt4 book ai didi

c# - 将 IronPython 方法分配给 C# 委托(delegate)

转载 作者:太空狗 更新时间:2023-10-29 22:24:37 25 4
gpt4 key购买 nike

我有一个看起来有点像的 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 之外),在这个分配之后,默认方法被运行。

我知道脚本已运行,因为脚本的其他部分有效。

我应该怎么做?

最佳答案

我做了一些进一步的谷歌搜索,找到了一个关于 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)

关于c# - 将 IronPython 方法分配给 C# 委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3958623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com