Assigning an IronPython method to a C# delegate(将 IronPython 方法分配给 C# 委托)
问题描述
我有一个 C# 类,看起来有点像:
I have a C# class that looks a little like:
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 脚本,它可以在看起来像这样的应用程序中运行
And I have an IronPython script that gets run in the application that looks like
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 之外),在这个赋值之后,默认的方法就会运行.
But when ProcessMethod gets called (outside of IronPython), after this assignment, the default method is run.
我知道脚本正在运行,因为脚本的其他部分有效.
I know the script is run because other parts of the script work.
我应该怎么做?
推荐答案
我做了一些进一步的谷歌搜索,发现了一个关于 IronPython 黑暗角落的页面:http://www.voidspace.org.uk/ironpython/dark-corners.shtml
I did some further Googling and found a page about the darker corners of 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)
这篇关于将 IronPython 方法分配给 C# 委托的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:将 IronPython 方法分配给 C# 委托
基础教程推荐
- 从 VS 2017 .NET Core 项目的发布目录中排除文件 2022-01-01
- 全局 ASAX - 获取服务器名称 2022-01-01
- 将事件 TextChanged 分配给表单中的所有文本框 2022-01-01
- 是否可以在 asp classic 和 asp.net 之间共享会话状态 2022-01-01
- 经典 Asp 中的 ResolveUrl/Url.Content 等效项 2022-01-01
- 错误“此流不支持搜索操作"在 C# 中 2022-01-01
- 在 VS2010 中的 Post Build 事件中将 bin 文件复制到物 2022-01-01
- 如何动态获取文本框中datagridview列的总和 2022-01-01
- 首先创建代码,多对多,关联表中的附加字段 2022-01-01
- JSON.NET 中基于属性的类型解析 2022-01-01
