예제 #1
0
        private static void ReadRootObjectBasicMember(Type memberType, BoisBasicTypeInfo basicInfo, PropertyInfo prop, FieldInfo field, Type containerType, ILGenerator il, SharedVariables variableCache)
        {
            switch (basicInfo.KnownType)
            {
            case EnBasicKnownType.String:
                EmitGenerator.ReadString(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Bool:
                EmitGenerator.ReadBool(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Int16:
                EmitGenerator.ReadInt16(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Int32:
                EmitGenerator.ReadInt32(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Int64:
                EmitGenerator.ReadInt64(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.UInt16:
                EmitGenerator.ReadUInt16(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.UInt32:
                EmitGenerator.ReadUInt32(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.UInt64:
                EmitGenerator.ReadUInt64(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Double:
                EmitGenerator.ReadDouble(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Decimal:
                EmitGenerator.ReadDecimal(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Single:
                EmitGenerator.ReadFloat(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Byte:
                EmitGenerator.ReadByte(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.SByte:
                EmitGenerator.ReadSByte(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.DateTime:
                EmitGenerator.ReadDateTime(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.DateTimeOffset:
                EmitGenerator.ReadDateTimeOffset(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.KnownTypeArray:
                EmitGenerator.ReadUnknownArray(prop, field, null, containerType, il, basicInfo.IsNullable, variableCache);
                break;

            case EnBasicKnownType.ByteArray:
                EmitGenerator.ReadByteArray(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Enum:
                EmitGenerator.ReadEnum(prop, field, null, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.TimeSpan:
                EmitGenerator.ReadTimeSpan(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Char:
                EmitGenerator.ReadChar(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Guid:
                EmitGenerator.ReadGuid(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Color:
                EmitGenerator.ReadColor(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.DbNull:
                EmitGenerator.ReadDbNull(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Uri:
                EmitGenerator.ReadUri(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Version:
                EmitGenerator.ReadVersion(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.DataTable:
                EmitGenerator.ReadDataTable(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.DataSet:
                EmitGenerator.ReadDataSet(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            default:
            case EnBasicKnownType.Unknown:
                return;
            }
        }
예제 #2
0
        private static void WriteRootObjectBasicMember(Type memberType, BoisBasicTypeInfo basicInfo, PropertyInfo prop, FieldInfo field, Type containerType, ILGenerator il)
        {
            switch (basicInfo.KnownType)
            {
            case EnBasicKnownType.String:
                EmitGenerator.WriteString(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Bool:
                EmitGenerator.WriteBool(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Int16:
                EmitGenerator.WriteInt16(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Int32:
                EmitGenerator.WriteInt32(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Int64:
                EmitGenerator.WriteInt64(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.UInt16:
                EmitGenerator.WriteUInt16(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.UInt32:
                EmitGenerator.WriteUInt32(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.UInt64:
                EmitGenerator.WriteUInt64(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Double:
                EmitGenerator.WriteDouble(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Decimal:
                EmitGenerator.WriteDecimal(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Single:
                EmitGenerator.WriteFloat(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Byte:
                EmitGenerator.WriteByte(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.SByte:
                EmitGenerator.WriteSByte(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.DateTime:
                EmitGenerator.WriteDateTime(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.DateTimeOffset:
                EmitGenerator.WriteDateTimeOffset(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.ByteArray:
                EmitGenerator.WriteByteArray(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.KnownTypeArray:
                EmitGenerator.WriteKnownTypeArray(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Enum:
                EmitGenerator.WriteEnum(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.TimeSpan:
                EmitGenerator.WriteTimeSpan(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Char:
                EmitGenerator.WriteChar(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Guid:
                EmitGenerator.WriteGuid(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Color:
                EmitGenerator.WriteColor(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.DbNull:
                EmitGenerator.WriteDbNull(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Uri:
                EmitGenerator.WriteUri(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.Version:
                EmitGenerator.WriteVersion(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.DataTable:
                EmitGenerator.WriteDataTable(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            case EnBasicKnownType.DataSet:
                EmitGenerator.WriteDataSet(prop, field, null, containerType, il, basicInfo.IsNullable);
                break;

            default:
            case EnBasicKnownType.Unknown:
                return;
            }
        }
예제 #3
0
        internal static void WriteBasicTypeDirectly(Type containerType, ILGenerator il, BoisBasicTypeInfo keyTypeBasicInfo, Func <Type> valueLoader)
        {
            switch (keyTypeBasicInfo.KnownType)
            {
            case EnBasicKnownType.String:
                EmitGenerator.WriteString(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Bool:
                EmitGenerator.WriteBool(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Int16:
                EmitGenerator.WriteInt16(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Int32:
                EmitGenerator.WriteInt32(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Int64:
                EmitGenerator.WriteInt64(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.UInt16:
                EmitGenerator.WriteUInt16(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.UInt32:
                EmitGenerator.WriteUInt32(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.UInt64:
                EmitGenerator.WriteUInt64(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Double:
                EmitGenerator.WriteDouble(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Decimal:
                EmitGenerator.WriteDecimal(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Single:
                EmitGenerator.WriteFloat(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Byte:
                EmitGenerator.WriteByte(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.SByte:
                EmitGenerator.WriteSByte(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.DateTime:
                EmitGenerator.WriteDateTime(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.DateTimeOffset:
                EmitGenerator.WriteDateTimeOffset(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.KnownTypeArray:
                EmitGenerator.WriteKnownTypeArray(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.ByteArray:
                EmitGenerator.WriteByteArray(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Enum:
                EmitGenerator.WriteEnum(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.TimeSpan:
                EmitGenerator.WriteTimeSpan(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Char:
                EmitGenerator.WriteChar(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Guid:
                EmitGenerator.WriteGuid(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Color:
                EmitGenerator.WriteColor(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.DbNull:
                EmitGenerator.WriteDbNull(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Uri:
                EmitGenerator.WriteUri(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Version:
                EmitGenerator.WriteVersion(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.DataTable:
                EmitGenerator.WriteDataTable(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.DataSet:
                EmitGenerator.WriteDataSet(null, null, valueLoader, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Unknown:
            default:
                throw new ArgumentOutOfRangeException("keyTypeBasicInfo.KnownType");
            }
        }
예제 #4
0
        internal static void ReadBasicTypeDirectly(ILGenerator il, Type containerType, BoisBasicTypeInfo keyTypeBasicInfo, Action valueSetter)
        {
            switch (keyTypeBasicInfo.KnownType)
            {
            case EnBasicKnownType.String:
                EmitGenerator.ReadString(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Bool:
                EmitGenerator.ReadBool(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Int16:
                EmitGenerator.ReadInt16(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Int32:
                EmitGenerator.ReadInt32(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Int64:
                EmitGenerator.ReadInt64(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.UInt16:
                EmitGenerator.ReadUInt16(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.UInt32:
                EmitGenerator.ReadUInt32(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.UInt64:
                EmitGenerator.ReadUInt64(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Double:
                EmitGenerator.ReadDouble(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Decimal:
                EmitGenerator.ReadDecimal(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Single:
                EmitGenerator.ReadFloat(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Byte:
                EmitGenerator.ReadByte(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.SByte:
                EmitGenerator.ReadSByte(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.DateTime:
                EmitGenerator.ReadDateTime(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.DateTimeOffset:
                EmitGenerator.ReadDateTimeOffset(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.KnownTypeArray:
                //EmitGenerator.ReadKnownTypeArray(null, null, valueSetter, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.ByteArray:
                EmitGenerator.ReadByteArray(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Enum:
                EmitGenerator.ReadEnum(null, null, valueSetter, containerType, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.TimeSpan:
                EmitGenerator.ReadTimeSpan(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Char:
                EmitGenerator.ReadChar(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Guid:
                EmitGenerator.ReadGuid(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Color:
                EmitGenerator.ReadColor(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.DbNull:
                EmitGenerator.ReadDbNull(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Uri:
                EmitGenerator.ReadUri(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Version:
                EmitGenerator.ReadVersion(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.DataTable:
                EmitGenerator.ReadDataTable(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.DataSet:
                EmitGenerator.ReadDataSet(null, null, valueSetter, containerType, il, keyTypeBasicInfo.IsNullable);
                break;

            case EnBasicKnownType.Unknown:
            default:
                throw new ArgumentOutOfRangeException("keyTypeBasicInfo.KnownType");
            }
        }