2013-08-28 6 views
2

Моя забота в основном связана с клиентом Redis ServiceStack. У меня есть куча объектов, которые я хочу хранить в кеше. Их члены в основном инкапсулированы (частные), а некоторые из них не имеют никакого публичного доступа. Сериализаторы ServiceStack позволяют мне хранить (и получать, очевидно) эти объекты в Redis? Или мне нужно создавать «чистые» классы POCO с публичными свойствами для сериализации, что заставило бы меня поддерживать 2 представления любого объекта: реальное и «поддельное» представление POCO для его хранения в Redis?Может ли JsonSerializer ServiceStack сериализовывать частные члены?

Я надеюсь, что ответ не последний :)

ответ

1
public static string SerializeObject(object obj, BindingFlags membersType) {    
     var typeConfigType = typeof(TypeConfig<>).MakeGenericType(obj.GetType()); 

     var prop = typeConfigType.GetMembers(BindingFlags.Public | BindingFlags.Static).FirstOrDefault(item => item.Name == "Fields") as PropertyInfo; 
     prop.SetValue(null, obj.GetType().GetFields(membersType), null); 

     prop = typeConfigType.GetMembers(BindingFlags.Public | BindingFlags.Static).FirstOrDefault(item => item.Name == "Properties") as PropertyInfo; 
     prop.SetValue(null, new PropertyInfo[0], null); 

     return JsonSerializer.SerializeToString(obj); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^