我有一个如下所示的网络服务;
[Route("/MyService", Verbs = "POST")]
public class MyData
{
public string GUID { get; set; }
public BankDetails BankDetail { get; set; }
public ContactNameData ContactNames { get; set; }
public List<AddressData> Addresses { get; set; }
}
public class AddressData
{
public string address1 { get; set; }
public string address2 { get; set; }
public string address3 { get; set; }
public string postalCode { get; set; }
public string city { get; set; }
public string state { get; set; }
public string countryCode { get; set; }
}
public class ContactNameData
{
public string title { get; set; }
public string firstName { get; set; }
public string middleName { get; set; }
public string lastName { get; set; }
}
public class BankDetails
{
public string sortCode { get; set; }
public string accountNumber { get; set; }
}
public class My_ServiceStack : Service
{
[Authenticate]
public object Post(MyData data)
{
// do something here
}
}
我遇到的问题是当我需要取消地址列表时。通过BankDetails对象和ContactNameData对象的空值发送按预期工作,但通过List的空值发送给我一个NullExceptionError
如何解决这个问题,以便我可以通过null发送给List?
答案 0 :(得分:1)
如果没有看到引发异常的具体行,很难说是发生了什么。
我最好的猜测是你对列表做了一些不允许使用null的东西。 C#中不存在NullExceptionError(除非您为自己定义了这样的错误),因此我假设您的意思是NullReferenceException。取消引用空对象引用时抛出此异常。例如,Addresses.Count将抛出此类异常,因为Count不能用于不存在的对象。
有几种方法可以解决这些问题;最常见的是在使用列表之前检查null。而不是
int addressCount;
addressCount = Addresses.Count;
你只需写
int addressCount = 0;
if (Addresses != null)
addressCount = Addresses.Count;
有关更具体的信息,我将不得不看看你对导致NullReferenceException的列表做了什么。
答案 1 :(得分:1)
谢谢Nebr。这是一个NullReferenceException错误,我正在获取并且是由Web服务中的代码引起的,该代码正在使用Address数据执行某些操作。将该代码包装在!= null if语句中对问题进行排序。它现在按预期工作
非常感谢答案 2 :(得分:0)
尝试发送空列表而不是空列表