2

我们正在尝试将 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"));
    }
}

测试根本没有序列化,有什么提示吗?

4

1 回答 1

2

在 v4 中,属性是继承的,并且因为AuthUserSession是一个 DataContract,其中序列化是 opt-in,您需要用 标记要序列化的每个属性[DataMember],例如:

public class TestUserSession : AuthUserSession
{
    [DataMember]
    public string Test { get; set; }
}
于 2014-02-10T16:56:30.567 回答