具有空安全性的Web API空列表

Bea*_*ood 1 .net c# asp.net-web-api angularjs

我有一个角度控制器,它是一个Web API方法的帖子.我试图在ienumerable上添加null安全性,但是当我这样做时,导致ienumerable总是为空.

角度呼叫

$http.post(customer/DoSomething, {names: ["chris", "joe"]})
Run Code Online (Sandbox Code Playgroud)

方法

string DoSomething(Customer customer){...}
Run Code Online (Sandbox Code Playgroud)

模型

// populates IEnumerable
public class Customer
{
    public IEnumerable<string> Names {get; set;}

}

// what I want to do but IEnumerable is always empty
public class Customer
{

    private IEnumerable<string> _names;
    public IEnumerable<string> Names 
    {
         get 
         {
             return _names ?? new List<string>();
         }
         set
         {
            _names = value;
         }
    }

}
Run Code Online (Sandbox Code Playgroud)

Sam*_*azi 7

您可以添加一个初始化集合的构造函数.

// populates IEnumerable
public class Customer
{
    public Customer()
    {
      this.Names = new List<string>();
    }

    public IEnumerable<string> Names {get; set;}

}
Run Code Online (Sandbox Code Playgroud)

它将确保您的Names集合不为空.

编辑

现在已经使用C#auto属性简化了这一点

// populates IEnumerable
public class Customer
{
    public IEnumerable<string> Names {get; set;} = new List<string>();    
}
Run Code Online (Sandbox Code Playgroud)