我们尝试将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"));
}
}
测试根本没有序列化,任何提示?
答案 0 :(得分:2)
在第4版中,属性是继承的,因为AuthUserSession是DataContract,serialization is opt-in,您需要使用[DataMember]
标记要序列化的每个属性,例如:
public class TestUserSession : AuthUserSession
{
[DataMember]
public string Test { get; set; }
}