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

ActivatorUtilities.CreateInstance是否支持可空类型构造函数?传null报错求解决

问题原因与解决方法

问题根源

当你传入null作为userGroupId参数时,params object[]会把这个null当成无类型的object值,而ActivatorUtilities.CreateInstance无法自动推断这个null应该对应int?类型,因此找不到匹配的构造函数。而传入1这类有效值时,int类型可以隐式转换为int?,能被正确识别匹配构造函数。

解决方法

方法1:显式指定null的类型

调用Create方法时,将null强制转换为int?,让参数数组明确携带int?类型的null值:

var viewModel = Create<UserGroupEditViewModel>(mediator, (int?)null);

方法2:增加构造函数重载

给UserGroupEditViewModel添加一个仅接收IMediator的构造函数,内部调用原构造函数并传入null:

public UserGroupEditViewModel(IMediator mediator) : this(mediator, null)
{
}

调用时只需传入mediator即可:

var viewModel = Create<UserGroupEditViewModel>(mediator);

方法3:手动构造参数数组并指定类型

如果需要更灵活的场景,可以手动构造参数数组,确保元素类型正确:

object[] parameters = new object[] { mediator, (int?)null };
var viewModel = Create<UserGroupEditViewModel>(parameters);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 07:54:53