Boo.Lang.Compiler.Steps.EmitAssembly.CreateByteArrayFromLiteralCollection C# (CSharp) Метод

CreateByteArrayFromLiteralCollection() приватный Метод

private CreateByteArrayFromLiteralCollection ( IType type, Boo.Lang.Compiler.Ast.ExpressionCollection items ) : byte[]
type IType
items Boo.Lang.Compiler.Ast.ExpressionCollection
Результат byte[]
        byte[] CreateByteArrayFromLiteralCollection(IType type, ExpressionCollection items)
        {
            using (MemoryStream ms = new MemoryStream(items.Count * TypeSystemServices.SizeOf(type)))
            {
                using (BinaryWriter writer = new BinaryWriter(ms))
                {
                    foreach (Expression item in items)
                    {
                        //TODO: BOO-1222 NumericLiteralExpression.GetValueAs<T>()
                        if (item.NodeType == NodeType.IntegerLiteralExpression)
                        {
                            IntegerLiteralExpression literal = (IntegerLiteralExpression) item;
                            if (type == TypeSystemServices.IntType)
                                writer.Write(Convert.ToInt32(literal.Value));
                            else if (type == TypeSystemServices.UIntType)
                                writer.Write(Convert.ToUInt32(literal.Value));
                            else if (IsLong(type))
                                writer.Write(Convert.ToInt64(literal.Value));
                            else if (type == TypeSystemServices.ULongType)
                                writer.Write(Convert.ToUInt64(literal.Value));
                            else if (type == TypeSystemServices.ShortType)
                                writer.Write(Convert.ToInt16(literal.Value));
                            else if (type == TypeSystemServices.UShortType)
                                writer.Write(Convert.ToUInt16(literal.Value));
                            else if (type == TypeSystemServices.ByteType)
                                writer.Write(Convert.ToByte(literal.Value));
                            else if (type == TypeSystemServices.SByteType)
                                writer.Write(Convert.ToSByte(literal.Value));
                            else if (type == TypeSystemServices.SingleType)
                                writer.Write(Convert.ToSingle(literal.Value));
                            else if (type == TypeSystemServices.DoubleType)
                                writer.Write(Convert.ToDouble(literal.Value));
                            else
                                return null;
                        }
                        else if (item.NodeType == NodeType.DoubleLiteralExpression)
                        {
                            DoubleLiteralExpression literal = (DoubleLiteralExpression) item;
                            if (type == TypeSystemServices.SingleType)
                                writer.Write(Convert.ToSingle(literal.Value));
                            else if (type == TypeSystemServices.DoubleType)
                                writer.Write(Convert.ToDouble(literal.Value));
                            else if (type == TypeSystemServices.IntType)
                                writer.Write(Convert.ToInt32(literal.Value));
                            else if (type == TypeSystemServices.UIntType)
                                writer.Write(Convert.ToUInt32(literal.Value));
                            else if (IsLong(type))
                                writer.Write(Convert.ToInt64(literal.Value));
                            else if (type == TypeSystemServices.ULongType)
                                writer.Write(Convert.ToUInt64(literal.Value));
                            else if (type == TypeSystemServices.ShortType)
                                writer.Write(Convert.ToInt16(literal.Value));
                            else if (type == TypeSystemServices.UShortType)
                                writer.Write(Convert.ToUInt16(literal.Value));
                            else if (type == TypeSystemServices.ByteType)
                                writer.Write(Convert.ToByte(literal.Value));
                            else if (type == TypeSystemServices.SByteType)
                                writer.Write(Convert.ToSByte(literal.Value));
                            else
                                return null;
                        }
                        else
                            return null;
                    }
                }
                return ms.ToArray();
            }
        }
EmitAssembly