.NET中可以使用通用的BitConverter.GetBytes吗?

Dra*_*ake 2 .net generics byte

是否有可能创建一个像BitConverter.GetBytes()这样的方法,它接受一个Object类型的参数作为输入,而不像这里所做的那样使用Marshaling ?

或者唯一的解决方案,如果给出一个类型的Object作为输入,是在所有可用的.NET 值类型上实现一个案例

Han*_*ant 5

不,不是.类或结构的内部布局是不可发现的.在[StructLayout]的引导下,需要进行封送处理,以将未记录的布局转换为已知布局.JIT编译器很容易利用这一点,它重新排序结构中的字段,例如使它们正确对齐并且需要最少的存储空间.这打败了任何与非托管指针混淆的技巧.简单的值类型可以预测,但它们已经被BitConverter很好地覆盖了.结构是你的克星.

这就是为什么.NET框架支持内存映射文件这么长时间的原因之一.但它们将在.NET 4.0中可用,您可以利用MemoryMappedViewAccessor类.它仍然使用编组,它隐藏在地垫下.