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

.NET MAUI构建Post API模型时出现空引用异常问题

解决.NET MAUI中ClientesCrm模型空引用异常问题

异常原因

ClientesCrm类中的contacts和attributes属于List<T>类型,当你新建ClientesCrm实例时,这两个列表默认处于null状态。你使用的attributes = { atributoscl }这种集合初始化语法,本质是调用已有列表的Add方法,但此时列表并未被实例化,直接调用方法就会触发“object reference not set to an instance of an object”空引用异常。


解决方案

方案1:在ClientesCrm构造函数中预初始化列表

修改ClientesCrm类,添加构造函数提前实例化两个列表,后续使用集合初始化器时就能正常调用Add方法:

public class ClientesCrm
{
    public ClientesCrm()
    {
        contacts = new List<Contact>();
        attributes = new List<Attribute>();
    }
    // 其余属性保持原有定义不变
}

方案2:对象初始化时直接实例化列表

无需修改模型类,在创建ClientesCrm实例时,直接为contacts和attributes新建列表并添加元素:

ClientesCrm cliente = new()
{
    organizationId = 1,
    firstName = NombresCliente,
    lastName = ApellidosCliente,
    invoiceAddressSameAsContact = true,
    isLead = false,
    clientType = 1,
    note = NotasCliente,
    // 直接实例化列表并传入元素
    attributes = new List<Models.Attribute> { atributoscl },
    contacts = new List<Models.Contact> { contactoscl },
    addressGpsLat = Convert.ToDouble(Latidud),
    addressGpsLon = Convert.ToDouble(Longitud)
};

方案3:先创建列表再赋值(适合多元素场景)

如果需要添加多个元素,可先单独创建列表对象,添加元素后再赋值给ClientesCrm的对应属性:

// 初始化属性列表并添加元素
var attributeList = new List<Models.Attribute>();
attributeList.Add(atributoscl);
// 可继续添加其他Attribute对象

// 初始化联系人列表并添加元素
var contactList = new List<Models.Contact>();
contactList.Add(contactoscl);
// 可继续添加其他Contact对象

ClientesCrm cliente = new()
{
    organizationId = 1,
    firstName = NombresCliente,
    lastName = ApellidosCliente,
    // 其他属性赋值...
    attributes = attributeList,
    contacts = contactList,
    addressGpsLat = Convert.ToDouble(Latidud),
    addressGpsLon = Convert.ToDouble(Longitud)
};

内容的提问来源于stack exchange,提问作者Oswaldo Roosemberg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:49:53