We're trying to use Redis ICacheClient with a CustomUserSession, but our custom properties are not stored. The problem seems to be in the json created by serializer.
Here a test:
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 is not serialized at all, any hint?
In v4, attributes are inherited and because AuthUserSession is a DataContract, where the serialization is opt-in, you need to mark each property you want to serialize with [DataMember]
, e.g:
public class TestUserSession : AuthUserSession
{
[DataMember]
public string Test { get; set; }
}