从表面上看,这似乎是一个简单的问题,但我想我会为这个问题与社区联系。我在流中序列化 .NET 类型,需要某种方法来唯一标识每种类型,以便我知道如何反序列化另一端的类型。我想到了各种方法:
- 使用需要整数来标识消息类型的属性注释每种类型
- 除了使用 GUID 之外,执行与 #1 相同的操作
- 散列完全限定名称
我希望能够在不需要属性的情况下做到这一点。使用整数容易发生冲突。每次创建新类型时生成 GUID 很麻烦。第三种选择似乎是可能的,但也有可能发生冲突,尽管有些孤立。
我想做的是以确定性的方式推断这种唯一性,以便任何对象都可以传入并在另一端反序列化,而无需以某种方式对其进行标记。假设我已经有办法在两端注册所有已知类型,所以在发送任何消息之前,两端都已经有了一个可接受类型的列表。我想做的就是让注册那些已知类型的过程变得不那么笨重。
编辑:我希望尽可能小,同时仍能达到我需要的独特性。