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# 委托
基础教程推荐
- MS Visual Studio .NET 的替代品 2022-01-01
- 为什么Flurl.Http DownloadFileAsync/Http客户端GetAsync需要 2022-09-30
- 将 XML 转换为通用列表 2022-01-01
- rabbitmq 的 REST API 2022-01-01
- 如何在 IDE 中获取 Xamarin Studio C# 输出? 2022-01-01
- c# Math.Sqrt 实现 2022-01-01
- 如何激活MC67中的红灯 2022-01-01
- SSE 浮点算术是否可重现? 2022-01-01
- 有没有办法忽略 2GB 文件上传的 maxRequestLength 限制? 2022-01-01
- 将 Office 安装到 Windows 容器 (servercore:ltsc2019) 失败,错误代码为 17002 2022-01-01