我遇到了问题,请查看此链接以获取更多信息:https://github.com/spring-projects/spring-net/issues/59
我正在使用的组件称为Spring Framework .Net,它在初始化带有double []数组的double类型的System.Array时遇到问题,在调用参数之前需要该类型。通过他们的GitHub问题部分对我发布的图像进行评估,我有源代码。我该怎么做才能解决这个问题?
using System;
using System.Collections.Generic;
public class MyClass
{
public static void RunSnippet()
{
int argCount = 1;
object[] values = new object[argCount];
int i = 0;
Type elementType = typeof(double);
object[] argValues = new Object[1];
double[] arr = new double[] { 9.0, 2.0, 4.0 };
argValues[0] = arr;
Break();
// copy regular arguments
while (i < argCount - 1)
{
values[i] = argValues[i];
i++;
}
Array paramArray = Array.CreateInstance(elementType, argValues.Length - i);
int j = 0;
while (i < argValues.Length)
{
//paramArray.SetValue(argValues[i++], j++);
paramArray.SetValue(Convert.ChangeType(argValues[i], argValues[i].GetType()), j);
i++;
j++;
}
values[values.Length - 1] = paramArray;
}
#region Helper methods
public static void Main()
{
try
{
RunSnippet();
}
catch (Exception e)
{
string error = string.Format("---\nThe following error occurred while executing the snippet:\n{0}\n---", e.ToString());
Console.WriteLine(error);
}
finally
{
Console.Write("Press any key to continue...");
Console.ReadKey();
}
}
private static void WL(object text, params object[] args)
{
Console.WriteLine(text.ToString(), args);
}
private static void RL()
{
Console.ReadLine();
}
private static void Break()
{
System.Diagnostics.Debugger.Break();
}
#endregion
}
答案 0 :(得分:0)
我知道我在这里已经很晚了,但是我希望这对某些人有帮助。
请注意,由于以下几行,“ paramArray”是一个双精度数组:
Type elementType = typeof(double);
Array paramArray = Array.CreateInstance(elementType, argValues.Length - i);
另外,在while循环中,argValues [0]的值是{9.0,2.0,4.0}的双精度数组; 因此,尝试将“ double array”添加为double array的一项。您只能在此处添加一个double值,不能添加double数组。
将elementType的类型更改为double []应该可以解决此问题。
Type elementType = typeof(double[]);