2013-08-28 81 views
2

我的問題主要是使用ServiceStack的Redis客戶端。我有一堆我想存儲在緩存中的實體。他們的成員大多封裝(私人),其中一些成員沒有任何公共訪問者。 ServiceStack的序列化器是否允許我在Redis中存儲(顯然)這些實體?或者我必須創建帶有公共屬性的「乾淨」POCO類來進行序列化,這將迫使我維護任何實體的2個表示:一個真實的表示,以及一個用於將其存儲在Redis中的「假」POCO表示?ServiceStack的JsonSerializer可以序列化私有成員嗎?

我希望答案不是後者:)

回答

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); 
} 
相關問題