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

继承InputBase<TValue>的自定义Select组件EventCallback传递报错解决

解决Blazor自定义Select组件的EventCallback类型不匹配问题

问题原因

编译器报错是因为子组件定义的EventCallback<Select<TValue>>与父组件回调方法的参数类型在隐式转换时不兼容。当父组件使用Select<int>实例时,子组件的OnSelected实际应为EventCallback<Select<int>>,直接传递方法组会触发类型转换错误。

正确传递回调的两种方法

方法一:显式创建匹配的EventCallback

通过EventCallback.Factory.Create指定泛型类型,确保类型完全匹配:

<Select Id="InvestmentEntity" OnSelected="@EventCallback.Factory.Create<Select<int>>(this, OnInvestmentEntitySelect)"></Select>

方法二:使用类型匹配的Lambda表达式

确保Lambda参数类型与子组件OnSelected的泛型类型一致:

<Select Id="InvestmentEntity" OnSelected="@(sender => OnInvestmentEntitySelect(sender))"></Select>

如果方法签名完全匹配,也可直接使用方法组写法(需确保Blazor能正确推断类型):

<Select Id="InvestmentEntity" OnSelected="@OnInvestmentEntitySelect"></Select>

额外检查项

  • 确认父组件已引用子组件命名空间:@using Accounting.Web.Components.Forms
  • 子组件OnSelected参数未与InputBase<TValue>内置事件冲突(当前自定义命名无问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 12:05:42