使用clr pythonnet将参数(带ref)和字符串数组传递到.net函数中

gzszwxb4  于 2023-01-24  发布在  Python
关注(0)|答案(1)|浏览(195)

我在一个dll中有这个函数,我通过python中的clr导入了asNetArray函数,我在网络中找到了这个函数。

public static double DrawdownTable(ref System.Array resDrawdown, ref System.Array resPeak, ref System.Array resThrough, ref System.Array resRecover, System.Array dateVector, System.Array security)
resDrawdown = asNetArray(np.array([]))
    resPeak = asNetArray(np.array([]))
    resThrough = asNetArray(np.array([]))
    resRecover = asNetArray(np.array([]))

    date=date.strftime('%Y-%m-%d').to_list()
    date = Array[str](date)
    #table =  Engine.DrawdownTable(asNetArray(date),asNetArray(security))
    (result,resDrawdown,resPeak,resThrough,resRecover) = Engine.DrawdownTable(resDrawdown,resPeak,resThrough,resRecover,date,security)

不幸的是,我有这个错误。

Traceback (most recent call last):
  File "<string>", line 1, in <module>
System.IndexOutOfRangeException: L'index se trouve en dehors des limites du tableau.
   à System.Array.InternalGetReference(Void* elemRef, Int32 rank, Int32* pIndices)
   à System.Array.SetValue(Object value, Int32 index)
   à DrawdownTable(Array& resDrawdown, Array& resPeak, Array& resThrough, Array& resRecover, Array dateVector, Array security)

我不明白为什么,而且在pythonnet上搜索东西有点复杂,因为对于初学者来说没有太多的文档。我试图用Array[str]([])定义我的ref参数,但没有成功。

ugmeyewa

ugmeyewa1#

你看到的错误发生在你的DrawdownTable中。它得到了你创建的数组,但是你试图用错误的索引访问一个元素(可能来自其中一个)。

相关问题