2014-02-10 5 views
1

Мы пытаемся использовать Redis ICacheClient с CustomUserSession, но наши пользовательские свойства не сохраняются. Проблема, похоже, в json, созданной сериализатором.Сериализация CustomUserSession в ServiceStack

Вот тест:

public class CustomUserSession : AuthUserSession 
{ 
    public string Test { get; set; } 
} 

[TestFixture] 
public class UserSessionJsonTest 
{ 
    private CustomUserSession session; 

    [Test] 
    public void CanSerializeToJson() 
    { 
     session = new CustomUserSession() 
     { 
      UserName = "Ivan", 
      Address = "Address1", 
      Test = "123" 
     }; 
     JsConfig<CustomUserSession>.ExcludeTypeInfo = false; 
     JsConfig<CustomUserSession>.IncludeTypeInfo = true; 
     var json = JsonSerializer.SerializeToString(session); 
     Debug.WriteLine(json); 
     Assert.That(json.Contains("123")); 
    } 
} 

Test не сериализованная вообще, любой намек?

ответ

2

В v4, атрибуты наследуются и потому, что AuthUserSession является DataContract, где serialization is opt-in, вам нужно пометить каждое свойство вы хотите сериализовать с [DataMember], например:

public class TestUserSession : AuthUserSession 
{ 
    [DataMember] 
    public string Test { get; set; } 
} 
+1

Thx! Поддержка ServiceStack поразительна! –

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