0

我有这个问题,当我尝试投射“批处理”对象时,我提出了异常“无效投射”。你能帮我解释一下为什么吗?Vault5 对象存在并且是正确的。

public void batch(IEdmVault5 vault5)
{
    edmVault11 = (IEdmVault11)vault5;
    IEdmBatchRefVars batch = default(IEdmBatchRefVars);
    batch = (IEdmBatchRefVars)edmVault11.CreateUtility(EdmUtility.EdmUtil_BatchRefVars);

    //some code
}

编辑1:错误消息:

System.InvalidCastException HResult=0x80004002 Messaggio=Cast specato non valido

4

2 回答 2

0

我今天遇到了这个。解决方案是在 STA 模式下为当前线程初始化 COM。

  • 对于 WinForms 应用程序,这已经针对主/UI 线程完成(因此可能不适用)。
  • 对于控制台应用程序,请考虑将 [STAThread] 添加到您的 Main() 方法中。
  • 如果您在后台线程或任务上运行它,则需要直接操作线程状态。
于 2020-10-05T18:31:29.497 回答
-2

我建议你也试试这个改变

 public void batch(IEdmVault5 vault5)
{
    IEdmVault7 edmValult11 = null;
    if (vault5 == null)
    {
           vault5 = new EdmVault5();
    }
    edmVault11 = (IEdmVault11)vault5;
    IEdmBatchRefVars batch = default(IEdmBatchRefVars);
    batch = (IEdmBatchRefVars)edmVault11.CreateUtility(EdmUtility.EdmUtil_BatchRefVars);

    //some code
}

除了给定 Solidworks API 的性质外,请确保安装和许可证有效。

于 2020-02-16T12:16:27.550 回答