.NET Core中反解ObjectId(2)

ObjectId 的代码量看起来稍微多一些,但是实际上,核心的实现方法就只有 ReverseHex() 方法,该方法在内部反向了 ObjectIdFactory.NewId() 的过程,使得调用者可以通过调用 ObjectId.Timestamp 等公开属性反向追溯 Oid 的生产过程。

其它的对象比较、到 string/ObjectId 的隐式转换,则是一些语法糖式的工作,都是为了提高编码效率的。

需要注意的是,在类 ObjectId 的内部,创建了静态对象 ObjectIdFactory,我们还记得在 ObjectIdFactory 的构造函数内部的初始化工作,这里创建的静态对象,也是为了提高生产效率的设计。

调用示例

在完成了代码改造后,我们就可以对改造后的代码进行调用测试,以验证程序的正确性。

NewId

我们尝试生产一组 Oid 看看效果。

for (int i = 0; i < 100; i++) { var oid = ObjectId.NewId(); Console.WriteLine(oid); }

输出

.NET Core中反解ObjectId

通过上图可以看到,输出的这部分 Oid 都是有序的,这应该也可以成为替换 GUID/UUID 的一个理由。

生产/解包

var sourceId = ObjectId.NewId(); var reverseId = new ObjectId(sourceId);

.NET Core中反解ObjectId

通过解包可以看出,上图两个红框内的值是一致的,解包成功!

隐式转换

var sourceId = ObjectId.NewId(); // 转换为 string var stringId = sourceId; string userId= ObjectId.NewId(); // 转换为 ObjectId ObjectId id = stringId;

隐式转换可以提高编码效率哟!

结束语

通过上面的代码实现,融入了一些自己的需求。现在,可以通过解包来实现业务的追踪和日志的排查,在某些场景下,是非常有帮助的,增加的隐式转换语法糖,也可以让编码效率得到提高;同时将代码优化到 .NETCore 3.1,也使用了一些 C# 的语法糖。

以上就是.NET Core中实现ObjectId反解的方法的详细内容,更多关于.NET Core ObjectId反解的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/cb90f35dce6035da81ac1c13dd305061.html