Web Api:作为复杂对象集合的属性始终为空

时间:2012-11-13 02:29:02

标签: asp.net-web-api

我正在尝试在web api中返回此类:

    public IEnumerable<Product> Get()
    {
        var fruits = new Category("Fruits");
        var veggies = new Category("Veggies");

        var apple = new Product("apple");
        apple.Categories = new List<Category>() { fruits };

        var potato = new Product("Potatoes");
        potato.Categories = new List<Category>() { veggies };

        var banana = new Product("Banana");
        banana.Categories = new List<Category>() { fruits };

        List<Product> list = new List<Product>(){
          apple, potato, banana
        };

        return list; 
    }

无论出于何种原因,Categories集合总是返回空... 我错过了什么吗?

谢谢!

更新

 public class Category
    {
        public string Id { get; private set; }
        public string Name { get; private set; }

        public Category() { }

        public Category(string name)
        {
            if (string.IsNullOrEmpty(name))
                throw new ArgumentException("name must be set");

            this.Name = name;
        }
    }

Aaand ..它不会显示类别,因为Category类中的两个属性都没有公共setter。

让我想知道为什么序列化程序正在检查setter的访问修饰符。

2 个答案:

答案 0 :(得分:0)

类别类有2个属性,都有私有的setter;私有setter的属性不会被序列化。

答案 1 :(得分:0)

我已经验证私有设置问题已在web api RTM版本中修复。