唯一标识类型的最佳方法

时间:2012-04-14 20:05:37

标签: c# .net serialization

这似乎是一个简单的问题,但我认为我会向社区伸出这个问题。我在流中序列化.NET类型,并且需要某种方式来唯一地标识每个类型,以便我知道如何在另一侧反序列化类型。我想到了各种方法:

  1. 使用需要整数来标识消息类型
  2. 的属性为每个类型添加注释
  3. 与#1相同,但使用GUID
  4. 除外
  5. 散列完全限定名称
  6. 我希望能够在不需要属性的情况下做到这一点。使用整数是容易发生冲突的。每次创建新类型时生成GUID都很麻烦。第三种选择似乎是可能的,但也有可能发生冲突,尽管有些孤立。

    我希望能够以确定的方式推断出这种唯一性,以便任何对象都可以在另一端传入和反序列化,而不必以某种方式标记它。假设我已经有办法在两端注册所有已知类型,因此在发送任何消息之前,两端都已经有一个可接受类型的列表。我想做的就是让注册这些已知类型的过程不那么笨重。

    编辑:我希望尽可能地在线上尽可能小,同时仍然达到我所需的独特性。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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