我正在探索使用ServiceStack和Redis将redis中的文档保存为项目。如果我可以在文档类型中使用本地存储器中的其他文档类型的getter和setter,但是在(de)序列化时作为标量键,引用属性的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运行并将其分配给我的播放器实例的运动属性。
我看了一下JsConfig(De)serializeFn和Raw(De)serializeFn,我想我可以从一个(简单的)基本文档类型派生我的类型,带一个键,并且(de )来自字符串键的ser文档,但我看到的问题是将为根实例和属性调用该函数。
服务堆栈中是否有自定义属性(de)序列化程序覆盖的概念?或者有更好的方法吗?