solidworks 插件 C# 的 system.Array 转换问题
Issue with out system.Array Conversion for solidworks plugin C#
我刚刚进入了一个我不太适应的 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:无法从 'out System.Array' 转换为 'out string[]'
很简单
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
GetSerialNumberNames returns System.Array 类型 EdmBatchError2,它是 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;
}
我刚刚进入了一个我不太适应的 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:无法从 'out System.Array' 转换为 'out string[]'
很简单
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
GetSerialNumberNames returns System.Array 类型 EdmBatchError2,它是 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;
}