Redis不会序列化我的复杂对象?

时间:2014-05-10 16:50:06

标签: c# redis servicestack.redis

我有这个简单的课程:

 public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public int[] friends = new int[100];
    }

然后我像这样创造了Ienumerable:

 IEnumerable<Person> lstPerson = ParallelEnumerable.Range(a, b).Select(f => new Person
            {
                Id = ...,
                Name =...,
                Age = ...,
                friends = ParallelEnumerable.Range(0, 100).ToArray()
            });

但是运行Monitor,您可以看到数组序列化:

enter image description here

相关信息:

这就是我实际插入Redis的方式:

   using (IRedisClient redisClient = new RedisClient(host))
            {
                IRedisTypedClient<Person> phones = redisClient.As<Person>();
                foreach (var element in lstPerson)
                {
                      phones.SetEntry("urn:user>" + element.Id, element);
                }
            }

问题:

我做错了什么?为什么阵列没有被序列化,我可以把它包括在内吗?

1 个答案:

答案 0 :(得分:2)

您的friends是一个字段,而不是属性。

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
  //public int[] friends = new int[100];
    public int[] Friends {get; set; }
}

因为您稍后使用ToArray()填写它,所以您不需要初始化它。如果您仍想要,请使用构造函数或编写长属性。