【发布时间】:2013-08-10 21:16:34
【问题描述】:
我正在尝试将一个指针投射到一个通用结构(blittable)。 当我使用非泛型结构时,一切似乎都很好 => 然后我可以使用 Marshal.PtrToStructure(...) 但该函数不接收泛型结构(为什么?)
所以我写了以下内容:
public static object ReadValue<T>(IntPtr ptr) where T : struct
{
var dm = new DynamicMethod("$", typeof(T), Type.EmptyTypes);
ILGenerator il = dm.GetILGenerator();
il.Emit(OpCodes.Ldc_I4, ptr.ToInt32());
il.Emit(OpCodes.Ldobj, typeof(T));
il.Emit(OpCodes.Ret);
var func = (Func<T>)dm.CreateDelegate(typeof(Func<T>));
return func();
}
但是现在 Ldobj 指令出了点问题。 VS给了我: 附加信息:操作可能会破坏运行时的稳定性。
我做错了什么? 有谁知道解决这个问题的更好方法(指向通用结构)或发现这个函数有错误?
【问题讨论】:
标签: c# generics pointers structure unsafe