在ServiceStack中序列化CustomUserSession

时间:2014-02-10 16:42:52

标签: servicestack servicestack-text

我们尝试将Redis ICacheClient与CustomUserSession一起使用,但我们的自定义属性未存储。问题似乎是在序列化程序创建的json中。

这是一个测试:

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"));
    }
}

测试根本没有序列化,任何提示?

1 个答案:

答案 0 :(得分:2)

在第4版中,属性是继承的,因为AuthUserSession是DataContract,serialization is opt-in,您需要使用[DataMember]标记要序列化的每个属性,例如:

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