.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
相关产品推荐
相关产品推荐

