protected internal static OpCode GetStindOpCode(Type type)
{
if (type.IsPrimitive)
{
switch (Type.GetTypeCode(type))
{
case TypeCode.Byte:
case TypeCode.SByte:
case TypeCode.Boolean:
return OpCodes.Stind_I1;
case TypeCode.Int16:
case TypeCode.UInt16:
case TypeCode.Char:
return OpCodes.Stind_I2;
case TypeCode.Int32:
case TypeCode.UInt32:
return OpCodes.Stind_I4;
case TypeCode.Int64:
case TypeCode.UInt64:
return OpCodes.Stind_I8;
case TypeCode.Single:
return OpCodes.Stind_R4;
case TypeCode.Double:
return OpCodes.Stind_R8;
default:
throw new NotSupportedException();
}
}
else if (type.IsValueType)
return OpCodes.Stobj;
else
return OpCodes.Stind_Ref;
}