次のように宣言されたデリゲートがあります。
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;
}
};
可能であれば、ストリームから1バイトを読み取ります。
しかし、関数ポインタを取得しようとすると、次のようになります。
IntPtr foo = Marshal.GetFunctionPointerForDelegate(reader);
例外があります:
System.NotSupportedException was unhandled
Message="0x80131515"
StackTrace:
в System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate(Delegate d)
...
理由は何ですか?コードを変更するにはどうすればよいですか?