private void EmitByRef(ILGenerator gen) { var elementType = type.GetElementType(); if (IsPrimitiveOrClass(elementType)) { OpCodeUtil.EmitLoadOpCodeForDefaultValueOfType(gen, elementType); OpCodeUtil.EmitStoreIndirectOpCodeForType(gen, elementType); } else if (elementType.GetTypeInfo().IsGenericParameter || elementType.GetTypeInfo().IsValueType) { gen.Emit(OpCodes.Initobj, elementType); } else { throw new ProxyGenerationException("Can't emit default value for reference of type " + elementType); } }
public override void StoreReference(ILGenerator gen) { OpCodeUtil.EmitStoreIndirectOpCodeForType(gen, Type); }