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

Blazor开发中如何动态获取typeof(item)的值?

Blazor动态获取实例类型调用方法解决方案

核心问题原因

typeof是编译时运算符,仅能接收具体类型名(如typeof(DarknetGalleryEntity)),无法直接用于运行时的实例对象item。要获取实例的运行时类型,必须使用实例方法GetType()。

解决方案分两种场景

场景1:Accept/Deny方法接收字符串类型名

如果你的方法需要传入类型的短名称(如你之前用的"DarknetGalleryEntity"),直接调用实例的GetType().Name获取:

<!-- 动态调用示例 -->
<button @onclick="() => Accept(item.GetType().Name)">Accept</button>
<button @onclick="() => Deny(item.GetType().Name)">Deny</button>

如果后端需要包含命名空间的全限定类型名,则改用GetType().FullName:

<button @onclick="() => Accept(item.GetType().FullName)">Accept</button>

场景2:Accept/Deny方法接收Type类型参数

如果可以修改后端方法的参数为Type类型,直接传递实例的类型对象更简洁:

// 后端方法定义示例
public void Accept(Type entityType)
{
    // 业务逻辑处理
}
<!-- Blazor组件中调用 -->
<button @onclick="() => Accept(item.GetType())">Accept</button>

空值安全处理

如果item可能为null,需添加空判断避免空引用异常:

<button @onclick="() => { if(item != null) Accept(item.GetType().Name); }">Accept</button>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:30:48