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

标签 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);
                }
            }

问题:

我做错了什么?为什么数组没有序列化,我怎样才能让它包含在内?

最佳答案

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

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() 填充它,所以您实际上不需要初始化它。如果您仍然需要,请使用构造函数或编写属性的长格式。

关于c# - Redis 不会序列化我的复杂对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23583826/

相关文章:

c# - 在 ALB 上使用 Cognito 用户池进行 ASP.NET Core 身份验证

c# - 异步 LINQ - 不懒惰?多线程?

c# - 如何在Redis缓存中存储列表元素

c# - 如何在 C# 中从 Redis 数据库获取、更新所有键及其值?

android - ServiceStack.Redis 从统一导出的 .apk 文件中抛出 PlatformNotSupported 异常

c# - 创建 BitmapImage 的背景

c# - 如何避免 System.IO.PathTooLongException?

javascript - Socket.io 和 Redis Pub/Sub 不工作

django - 如何在 celery 内为每个用户生成队列?

REDIS:EXPIRE是否有事件