无法创建引用类实例:C# Web API中PaymentDto初始化报错
问题解决:PaymentDto对象初始化报错
直接解决方案
放弃使用对象初始化器,改为先实例化对象再逐个赋值:
var payment = new PaymentDto(); payment.Iinn = "1131244211"; payment.Acn = "2131244212"; payment.Trmn = "3131244213"; payment.Trn = "4131244214";
报错原因分析
你的项目基于.NET Framework 4.7.2,而NuGet包中的PaymentDto类使用了C# 8.0+引入的Nullable参考类型特性(类定义里的NullableAttribute、NullableContextAttribute可佐证)。虽然4.7.2对Nullable特性有基础支持,但编译器对带有这类特性的类的对象初始化器存在兼容性问题,导致无法识别属性的setter,从而抛出“无法初始化,它不是字段或属性”的错误。
可选的持久化解决方案
如果想继续使用对象初始化器,可以修改项目配置以更好适配Nullable特性:
- 右键项目 → 属性 → 生成 → 高级
- 在弹出窗口中,将“Nullable参考类型”设置为“启用”
- 保存设置后重新编译项目
或者直接编辑项目的.csproj文件,添加以下配置:
<PropertyGroup> <Nullable>enable</Nullable> </PropertyGroup>
内容的提问来源于stack exchange,提问作者Mr Developer
相关产品推荐
相关产品推荐

