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

VB.NET(Framework)调用后期绑定扩展方法解决MQTTnet BC36908错误

解决VB.NET中MQTTnet EnqueueAsync的BC36908错误

这个错误的根源是EnqueueAsync是MQTTnet提供的扩展方法,而VB.NET对接口类型变量的后期绑定扩展方法支持有限,无法自动解析。不用修改MQTTnet库,用以下两种方法就能解决:

方法一:显式调用扩展方法的静态类实现

MQTTnet的EnqueueAsync扩展方法定义在ManagedMqttClientExtensions静态类中,直接以静态方法的形式调用,把你的managedMqttClientPublisher实例作为第一个参数传入即可:

If managedMqttClientPublisher IsNot Nothing Then
  Await ManagedMqttClientExtensions.EnqueueAsync(managedMqttClientPublisher, message)
End If

这种方式绕开了VB的后期绑定解析,直接指定调用静态方法,是最稳妥的方案。

方法二:将变量声明改为具体实现类型

如果mqttFactory.CreateManagedMqttClient()返回的是具体的ManagedMqttClient类(而非仅接口),可以把你的变量声明从接口改为具体类:

Private managedMqttClientPublisher As ManagedMqttClient ' 替换原来的IManagedMqttClient

这样VB就能直接识别扩展方法(因为具体类型的扩展方法解析没有问题),原来的实例调用代码可以保留不变。

注意:方法一兼容性更好,不管MQTTnet返回的是哪个IManagedMqttClient的实现类都能生效;方法二需要确认CreateManagedMqttClient的返回类型是否为ManagedMqttClient。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 02:58:19