[英]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返回類型為EdmBatchError2的 System.Array,它是4個整數的結構,所以我不知道在可用的意義上它將如何轉換為string []。 這是我的工作:
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.