我有委托声明为:
internal delegate bool readDelegate(out byte data);
在某些时候,我想获得一个指向委托实例的函数指针:
readDelegate reader = (out byte data) =>
{
Console.WriteLine("Managed output! opening");
if (stream.CanRead)
{
data = (byte)stream.ReadByte();
return true;
}
else
{
data = 0;
return false;
}
};
如果能够从流中读取单个字节。
但是当我尝试获取一个函数指针时,就像这样:
IntPtr foo = Marshal.GetFunctionPointerForDelegate(reader);
我得到一个例外:
System.NotSupportedException was unhandled
Message="0x80131515"
StackTrace:
в System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate(Delegate d)
...
是什么原因?我该如何更改我的代码?
答案 0 :(得分:0)
异常消息的其余部分是什么?应该有错误的解释。
无论如何,我认为这可能有用:
internal unsafe delegate bool readDelegate(byte* data);