本文整理汇总了C#中EmitContext.EmitCollection方法的典型用法代码示例。如果您正苦于以下问题:C# EmitContext.EmitCollection方法的具体用法?C# EmitContext.EmitCollection怎么用?C# EmitContext.EmitCollection使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类EmitContext
的用法示例。
在下文中一共展示了EmitContext.EmitCollection方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Emit
internal override void Emit (EmitContext ec)
{
var ig = ec.ig;
var type = this.Type;
LocalBuilder local = null;
if (type.IsValueType) {
local = ig.DeclareLocal (type);
ig.Emit (OpCodes.Ldloca, local);
if (constructor == null) {
ig.Emit (OpCodes.Initobj, type);
ig.Emit (OpCodes.Ldloc, local);
return;
}
}
ec.EmitCollection (arguments);
if (type.IsValueType) {
ig.Emit (OpCodes.Call, constructor);
ig.Emit (OpCodes.Ldloc, local);
} else
ig.Emit (OpCodes.Newobj, constructor ?? GetDefaultConstructor (type));
}
示例2: EmitNewArrayBounds
private void EmitNewArrayBounds(EmitContext emitContext, Type type)
{
int rank = _expressions.Count;
emitContext.EmitCollection(_expressions);
if (rank == 1)
{
emitContext.ig.Emit(OpCodes.Newarr, type);
return;
}
emitContext.ig.Emit(OpCodes.Newobj, GetArrayConstructor(type, rank));
}
示例3: Emit
internal override void Emit (EmitContext ec)
{
var local = ec.EmitStored (new_expression);
ec.EmitCollection (initializers, local);
ec.EmitLoad (local);
}
示例4: Emit
internal override void Emit(EmitContext emitContext)
{
var local = emitContext.EmitStored(_newExpression);
emitContext.EmitCollection(_initializers, local);
emitContext.EmitLoad(local);
}