簡體   English   中英

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返回類型為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM