【发布时间】:2020-03-28 20:01:51
【问题描述】:
我用 C# 构建了一个类库 application-dll,其类定义如下:
namespace Microsoft.Dynamics.NAV.NAVInteropHelper
{
public class WrapDecimalConvert
{
public static Type GetTypeofDouble()
{
return typeof(decimal);
}
}
}
我将 dll 添加到应用程序中,在我的全局变量中声明了以下变量
Name DataType Subtype Length
varArray DotNet System.Array.'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
varDotNet DotNet Microsoft.Dynamics.Nav.NavInteropHelper.WrapDecimalConvert.'NavInteropHelper, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'
然后在我的代码中,我有以下内容
arraySize := 10;
// Creates an instance of the .NET Framework array that contains the decimal type.
varArray := varArray.CreateInstance(GETDOTNETTYPE(varDotNet.WrapDecimalConvert()), arraySize);
// Clears the object instance because it is no longer used.
CLEAR(varDotNet);
// Sets the data in the array.
FOR i := 0 TO (arraySize -1) DO
varArray.SetValue(i+100.0,i);
一切似乎都很好,但是在调用该函数时,我得到了这个错误
对 Microsoft.Dynamics.Nav.Runtime.NavDotNet[].SetValue 的调用失败并显示以下消息:对象无法存储在此类型的数组中。
我已经被这个问题困扰了好几天了。任何帮助将不胜感激。
【问题讨论】:
标签: c# .net microsoft-dynamics dynamics-nav language-interoperability