我刚刚进入了一个我不太习惯的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'到'输出字符串[]'
答案 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;
}