我确信这是一个简单的问题,但我没有答案。这是senario和问题。

我有一个以特定格式存储的数组。该格式包含一个Header记录,其后面有muntiple详细记录。记录的标题告诉我使用什么TypeCode来存储数据,例如Int32。

我有一个例程,它接受一个byte []数组并将字节数据转换回它在C#中的正确格式。此例程需要适当的字节数才能使转换成功。

Q值。那么如何从给定的TypeCode获取字节长度以传递给Convert函数而不必对每种类型的长度进行硬编码?

有帮助吗?

解决方案

鉴于 TypeCode 只是一组固定值的枚举,您可以轻松地对它们的字典进行硬编码,例如。

private static readonly Dictionary<TypeCode,int> TypeCodeLength =
    new Dictionary<TypeCode,int> {
    { TypeCode.Int32, 4 },
    { TypeCode.Int64, 8 },
    { TypeCode.Char, 2 },
    // etc
}

(等效的解决方案是使用switch / case语句 - 如果你只是包含值,它们实际上是等价的。)

有些像 string object 一样可变 - 而其他一些将取决于你如何编码 DateTime

除非使用标准转换,否则框架中的任何内容都无法为您提供长度。我知道硬编码通常是不受欢迎的,但在这种情况下,它只在一个地方,并且将是最简单的选择。

其他提示

根据如何从TypeCode创建类型... ,你不能(没有详尽的开关)。当然,另一个方向(Type-&gt; TypeCode)是微不足道的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top