没有system.Array转换为solidworks插件C#

时间:2017-12-08 16:10:04

标签: c# arrays add-in solidworks

我刚刚进入了一个我不太习惯的SolidWorks C#项目。我需要将此out System.Array转换为string[]。然后调用该字符串并将其从out System.Array转换为out EdmLib.EdmBatchError2[]

TLDR:out System.Array'到string[]

代码:

private void GetSerialNumberGenerators() 
{
    IEdmSerNoGen7 utility = this.m_vault.CreateUtility(EdmUtility.EdmUtil_SerNoGen) as IEdmSerNoGen7;
    Array ppoRetNames = Array.CreateInstance(typeof(string[]), 0);
    utility.GetSerialNumberNames(out ppoRetNames);
    this.comboBoxSerialNumber.DataSource = (object) ppoRetNames;
}

严重性代码描述项目文件行抑制状态 错误CS1503参数1:无法从'输出System.Array'到'输出字符串[]'

2 个答案:

答案 0 :(得分:0)

这很简单

string[] ppoRetNames;
GetSerialNumberNames(out ppoRetNames);

这是声明string[]的方法。不要自己初始化它,因为GetSerialNumberNames会这样做(out-parameter)。无需使用Array.CreateInstance

除此之外,您正在创建一个锯齿状数组,因为您传递typeof(string[])而不是typeof(string)。你需要一个一维数组,所以这是正确的:

Array someArray = Array.CreateInstance(typeof(string), 0);
string[] ppoRetNames = (string[])someArray;  // so a cast is what was missing

答案 1 :(得分:0)

GetSerialNumberNames返回类型为EdmBatchError2的System.Array,这是一个4个整数的结构,所以我不知道如何在可用的意义上强制转换为字符串[]。这是我的工作:

utility.GetSerialNumberNames(out Array ppoRetNames);
foreach(EdmBatchError2 batchError in ppoRetNames) {
    // construct error message with below variables for each error
    //batchError.mlFileID;
    //batchError.mlFolderID;
    //batchError.mlVariableID;
    //batchError.mlErrorCode;
}