开发者社区> 问答> 正文

Python .net框架参考参数Double []&

使用Python for .Net框架,我尝试从C#.dll文件调用方法。此方法具有以下参数:

public static void ExternalFunction(
    String Arg1,
    ref Double[]& Arg2,
);

我了解.Net框架会将Python浮点数转换为双精度数。现在,我想知道如何制作一个数组(双精度)并将其作为对外部方法的引用。

我有以下代码:

import clr

clr.AddReference("MyDll")
from MyLib import MyClass

myName = "Benjamin"

r = MyClass.ExternalFunction(myName, 0.0);
print "Result: %s"%r

展开
收起
祖安文状元 2020-02-21 17:31:54 619 0
1 条回答
写回答
取消 提交回答
  • 您可以通过提供浮点列表(或元组)作为第二个参数来调用此方法。

    MyClass.ExternalFunction(myName, [0.0]);
    
    

    2个虚拟机中的2个不同数据结构之间将进行转换。Python.Net将在.Net环境中将python的float列表转换为double数组,并将其通过引用传递给您的函数。对第二个参数所做的更改不会传播回python。

    通过使用反射,您可以更好地控制参数封送处理。

    import clr
    clr.AddReference("MyDll")
    import System
    import MyLib
    
    myClassType = System.Type.GetType("MyLib.MyClass, MyDll") 
    method = myClassType.GetMethod("ExternalFunction")
    numbersArray = System.Array[System.Double]([1.0, 2.0, 3.0])
    parameters = System.Array[System.Object](["Benjamin",numbersArray])
    method.Invoke(None,parameters)
    
    
    numbersArray = parameters[1] # an updated Arg2 can be retrieved from parameters array
    
    2020-02-21 17:32:05
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载