【发布时间】:2020-11-03 00:51:47
【问题描述】:
如标题所述。但是,我正在尝试这样做:
delegate char[] FieldDelegate();
private FieldDelegate Get_InternalBuffer(StringBuilder sb)
{
var sbType = sb.GetType();
var fieldInfo = sbType.GetField("m_ChunkChars",
BindingFlags.GetField | BindingFlags.NonPublic | BindingFlags.Instance);
var dynMethod = new DynamicMethod("GetField", typeof(char[]), new Type[0], true);
ILGenerator ig = dynMethod.GetILGenerator();
ig.Emit(OpCodes.ldflda, fieldInfo);
ig.Emit(OpCodes.Ret);
return dynMethod.CreateDelegate(typeof(FieldDelegate)) as FieldDelegate;
}
简短,我不知道为什么。我已经检查了一个只包含一个“char []缓冲区”的类的IL代码来模拟我在这里做什么,它实际上正确地说明了这个:“IL_0006:ret”作为一个单一的IL_instruction,那么我做错了什么?
任何帮助都会很棒!
最好的问候
【问题讨论】:
-
这就像你问了自己一个问题。我的意思是这里确实缺乏信息。这个问题需要更清楚
-
您还需要什么?编辑了代表以显示我尝试创建哪个,对不起,我没有看到