문제

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; }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top