1

我正在探索使用 ServiceStack 和 Redis 将文档保存在项目的 redis 中。如果我可以在文档类型中使用 getter 和 setter 来在内存中本地引用其他文档类型,但在(反)序列化时作为标量键来引用属性的 redis 位置,那将是整洁的(也许)。就像是:

public class Sport
{
    public string Key { get; set; }
    public string Name { get; set; }
    public int RandomFactNumberOfPlayers { get; set; }
    // lots of other random properties about sport I don't want to duplicate in my player serialization
}

public class Player
{
    public string Key { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Sport { get; set; }
}

会将一项运动和一名球员序列化为:

{key: 'a', name: 'Football', randomFactNumberOfPlayers: 123456},
{key: 'b', firstName: 'Tom', lastName: 'Brady', sport: 'b'}

在反序列化这些记录时,我将有机会查看我的 redis 存储库并获取 b 的密钥并将其作为 Sport 并将其分配给我的 player 实例的 sport 属性。

我看了一点 JsConfig (De)serializeFn 和 Raw(De)serializeFn,我认为我可以让我的类型派生自一个(简单)基本 Document 类型,带有一个键和(de)ser 文档往返字符串键,但我看到的问题是该函数将为根实例和属性调用。

服务堆栈中是否有任何自定义属性(反)序列化程序覆盖的概念?还是有更好的方法来做到这一点?

4

0 回答 0