0

私はこの単純なクラスを持っています:

 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 すると、配列がシリアル化されていないことがわかります。

ここに画像の説明を入力

関連情報:

これは私が実際に 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);
                }
            }

質問 :

私は何を間違っていますか?配列がシリアル化されていないのはなぜですか?どうすれば配列を含めることができますか?

4

1 に答える 1

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()ので、初期化する必要はありません。それでも必要な場合は、コンストラクターを使用するか、長い形式のプロパティを記述します。

于 2014-05-10T16:54:04.640 に答える