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); }