4

从表面上看,这似乎是一个简单的问题,但我想我会为这个问题与社区联系。我在流中序列化 .NET 类型,需要某种方法来唯一标识每种类型,以便我知道如何反序列化另一端的类型。我想到了各种方法:

  1. 使用需要整数来标识消息类型的属性注释每种类型
  2. 除了使用 GUID 之外,执行与 #1 相同的操作
  3. 散列完全限定名称

我希望能够在不需要属性的情况下做到这一点。使用整数容易发生冲突。每次创建新类型时生成 GUID 很麻烦。第三种选择似乎是可能的,但也有可能发生冲突,尽管有些孤立。

我想做的是以确定性的方式推断这种唯一性,以便任何对象都可以传入并在另一端反序列化,而无需以某种方式对其进行标记。假设我已经有办法在两端注册所有已知类型,所以在发送任何消息之前,两端都已经有了一个可接受类型的列表。我想做的就是让注册那些已知类型的过程变得不那么笨重。

编辑:我希望尽可能小,同时仍能达到我需要的独特性。

4

2 回答 2

4

Type.GUID例如,您可以使用...

如果不适合您的情况,请提供更多详细信息...

于 2012-04-14T20:08:57.283 回答
1

除了可用的答案之外,我建议使用完全限定的类型名称。它已经保证了您的应用程序域内的唯一性。

于 2012-04-14T20:11:53.490 回答