You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 3.1 WPF应用dynamic转换报CS2066编译错误咨询

.NET Core 3.1下SolidWorks API WPF插件dynamic类型隐式转换编译异常问题

问题背景

正在借助SolidWorks API开发带WPF图形界面的SolidWorks插件,使用Visual Studio 2019创建了基于*.NET Core 3.1*的项目。SolidWorks API的大部分函数返回值类型为dynamic,此前在同样基于.NET Core 3.1的控制台应用中运行相同逻辑的代码时,未触发任何编译错误。

异常复现代码

using SW = SldWorks;
using System.Windows;

namespace dfdfdf
{
    public partial class App : Application
    {
        private void App_Startup(object sender, StartupEventArgs e)
        {
            // 连接SolidWorks程序
            SW.SldWorks SolidWorksApp = null;
            SW.ModelDoc2 swDoc;
            SolidWorksApp = new SldWorks.SldWorks();

            // 连接活动文档 --> 此处触发编译错误
            swDoc = SolidWorksApp.ActiveDoc;
        }
    }
}

错误现象

WPF项目编译时触发错误,错误码为CS2066:无法隐式转换‘type1’类型为‘type2’类型,存在显式转换(是否缺少强制转换?),该错误仅在错误列表选择「仅生成」选项时显示。
已知ActiveDoc属性的返回值为dynamic类型,添加如下显式转换后代码即可正常编译:

swDoc = (SW.ModelDoc2) SolidWorksApp.ActiveDoc;

待解答疑问

  • 为何完全相同的代码逻辑,在WPF应用中会触发编译错误,在控制台应用中却可以正常通过编译?按照对dynamic类型的常规认知,dynamic的类型绑定是在运行时而非编译时执行,理论上不应在编译阶段抛出此类隐式转换错误。
  • 目前已经对项目中的COM引用开启了「嵌入互操作类型」选项,是否存在其他遗漏的配置项,导致WPF项目和控制台项目出现行为差异?
  • 如果.NET Core平台确实要求该COM互操作场景下必须使用显式转换,也可以接受该写法,希望明确两类项目在此场景下编译表现存在差异的根本原因。

内容的提问来源于stack exchange,提问作者StarsKy1990

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.21 16:16:02