Пример #1
0
        private static bool ReadPropValue(BinaryReader reader, out PropTag ptag, out object value)
        {
            ptag  = (PropTag)reader.ReadUInt32();
            value = null;
            PropType propType  = ptag.ValueType();
            PropType propType2 = propType;

            if (propType2 <= PropType.String)
            {
                if (propType2 <= PropType.Boolean)
                {
                    switch (propType2)
                    {
                    case PropType.Null:
                    case PropType.Int:
                        break;

                    case PropType.Short:
                        value = reader.ReadUInt16();
                        goto IL_135;

                    default:
                        switch (propType2)
                        {
                        case PropType.Error:
                            break;

                        case PropType.Boolean:
                            value = (reader.ReadUInt16() != 0);
                            goto IL_135;

                        default:
                            goto IL_123;
                        }
                        break;
                    }
                }
                else if (propType2 != PropType.Long)
                {
                    switch (propType2)
                    {
                    case PropType.AnsiString:
                        value = BlobRecipientParser.ReadAnsiString(reader);
                        goto IL_135;

                    case PropType.String:
                        value = BlobRecipientParser.ReadString(reader);
                        goto IL_135;

                    default:
                        goto IL_123;
                    }
                }
                value = reader.ReadInt32();
                goto IL_135;
            }
            if (propType2 <= PropType.Binary)
            {
                if (propType2 == PropType.SysTime)
                {
                    value = BlobRecipientParser.ReadDateTime(reader);
                    goto IL_135;
                }
                if (propType2 == PropType.Binary)
                {
                    value = BlobRecipientParser.ReadBinary(reader);
                    goto IL_135;
                }
            }
            else
            {
                switch (propType2)
                {
                case PropType.AnsiStringArray:
                    value = BlobRecipientParser.ReadAnsiStringArray(reader);
                    goto IL_135;

                case PropType.StringArray:
                    value = BlobRecipientParser.ReadStringArray(reader);
                    goto IL_135;

                default:
                    if (propType2 == PropType.BinaryArray)
                    {
                        value = BlobRecipientParser.ReadBinaryArray(reader);
                        goto IL_135;
                    }
                    break;
                }
            }
IL_123:
            ExTraceGlobals.StorageTracer.TraceError <PropType>(0L, "BlobRecipientParser::ReadPropValue. Not supported PropType= {0}.", propType);
IL_135:
            return(value != null);
        }