2009-06-23 83 views
1

的长度,我敢肯定,这是一个简单的问题,但我没有答案。这是senario和问题。如何获得一个TypeCode

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

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

Q.那么如何从给定的TypeCode中获取字节的长度以传递给Convert函数,而无需对每种类型的长度进行硬编码?

回答

3

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

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

(换算的解决办法是使用一个开关/ case语句 - 他们真的是等价的,如果你只是其中的值。)

有些人,像stringobject将是可变的,虽然 - 和其他人将取决于你如何编码像DateTime这样的东西。

除非这是使用标准的转换,没有在框架要能够给你的长度。我知道硬编码通常是不被接受的,但在这种情况下,它只能在一个地方,并且将是最简单的选择。

+0

我一定误解了这个问题。 :)对于这个实现,似乎可以使用像BSTR这样的模型,其中数组的前四个字节表示类型的长度或类似这样的约定。 – 2009-06-23 18:48:20