This question对于如何确定某个类型是否可漂白的方法有很多答案。但是,它们似乎都依赖于GCHandle.Alloc为非可迁移类型抛出异常。但是,在Mono上,it doesn't do that。
我一直在尝试各种不同的替代方法来检测类型是否可蓝调,例如尝试检查Marshal.OffsetOf是否返回与使用不安全指针计算字段偏移量相同的偏移量,但是我还没有做过能够弄清楚如何找到托管字段偏移而又不会与SharpUitls等外部工具搞混。
对于上下文,我有一些代码可以解析C头并从中生成(希望)可蓝调的C#结构。我想编写一个自动化测试,以确保这些类型是可蓝调的。我正在使用反射来查找测试的生成类型。