public override void LoadArrayElement(Type type)
{
if (type == null)
throw new ArgumentNullException("type");
switch (Type.GetTypeCode(type))
{
case TypeCode.SByte:
Emit1ByteOpCode(0x90, 2, 1);
break;
case TypeCode.Int16:
Emit1ByteOpCode(0x92, 2, 1);
break;
case TypeCode.Int32:
Emit1ByteOpCode(0x94, 2, 1);
break;
case TypeCode.Int64:
Emit1ByteOpCode(0x96, 2, 1);
break;
case TypeCode.Byte:
Emit1ByteOpCode(0x91, 2, 1);
break;
case TypeCode.UInt16:
Emit1ByteOpCode(0x93, 2, 1);
break;
case TypeCode.UInt32:
Emit1ByteOpCode(0x95, 2, 1);
break;
case TypeCode.UInt64:
Emit1ByteOpCode(0x96, 2, 1);
break;
case TypeCode.Single:
Emit1ByteOpCode(0x98, 2, 1);
break;
case TypeCode.Double:
Emit1ByteOpCode(0x99, 2, 1);
break;
default:
if (type.IsClass == true)
Emit1ByteOpCode(0x9A, 2, 1);
else
{
int token = this.GetToken(type);
Emit1ByteOpCodeInt32(0xA3, 2, 1, token);
}
break;
}
PopStackOperands(VESType.Object, VESType.Int32);
PushStackOperand(ToVESType(type));
}