本文整理汇总了C#中CodeGen.EmitThis方法的典型用法代码示例。如果您正苦于以下问题:C# CodeGen.EmitThis方法的具体用法?C# CodeGen.EmitThis怎么用?C# CodeGen.EmitThis使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CodeGen
的用法示例。
在下文中一共展示了CodeGen.EmitThis方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: EmitBaseMethodDispatch
/// <summary>
/// Loads all the incoming arguments of cg and forwards them to mi which
/// has the same signature and then returns the result
/// </summary>
private static void EmitBaseMethodDispatch(MethodInfo mi, CodeGen cg)
{
if (!mi.IsAbstract) {
cg.EmitThis();
foreach (Slot argSlot in cg.argumentSlots) argSlot.EmitGet(cg);
cg.EmitCall(OpCodes.Call, mi, null); // base call must be non-virtual
cg.EmitReturn();
} else {
cg.EmitThis();
cg.EmitString(mi.Name);
cg.EmitCall(typeof(Ops), "MissingInvokeMethodException");
cg.Emit(OpCodes.Throw);
}
}
示例2: EmitGet
public override void EmitGet(CodeGen cg)
{
cg.EmitThis();
}
示例3: CallBaseConstructor
private static void CallBaseConstructor(ConstructorInfo parentConstructor, int offset, ParameterInfo[] pis, CodeGen cg)
{
cg.EmitThis();
for (int i = offset; i < pis.Length; i++) {
cg.EmitArgGet(i);
}
cg.Emit(OpCodes.Call, parentConstructor);
cg.Emit(OpCodes.Ret);
}
示例4: EmitGet
public override void EmitGet(CodeGen cg)
{
Contract.RequiresNotNull(cg, "cg");
cg.EmitThis();
}