internal QueryResult()

in provisioning/service/src/Config/QueryResult.cs [111:175]


        internal QueryResult(string typeString, string bodyString, string continuationToken)
        {
            Type = (QueryResultType)Enum.Parse(typeof(QueryResultType), typeString, true);
            ContinuationToken = string.IsNullOrWhiteSpace(continuationToken)
                ? null
                : continuationToken;

            if (Type != QueryResultType.Unknown && string.IsNullOrWhiteSpace(bodyString))
            {
                if (bodyString == null)
                {
                    throw new ArgumentNullException(nameof(bodyString));
                }

                throw new ArgumentException("Invalid query body.", nameof(bodyString));
            }

            switch (Type)
            {
                case QueryResultType.Enrollment:
                    Items = JsonConvert.DeserializeObject<IEnumerable<IndividualEnrollment>>(bodyString, JsonSerializerSettingsInitializer.GetJsonSerializerSettings());
                    break;

                case QueryResultType.EnrollmentGroup:
                    Items = JsonConvert.DeserializeObject<IEnumerable<EnrollmentGroup>>(bodyString, JsonSerializerSettingsInitializer.GetJsonSerializerSettings());
                    break;

                case QueryResultType.DeviceRegistration:
                    Items = JsonConvert.DeserializeObject<IEnumerable<DeviceRegistrationState>>(bodyString, JsonSerializerSettingsInitializer.GetJsonSerializerSettings());
                    break;

                default:
                    if (bodyString == null)
                    {
                        Items = null;
                    }
                    else
                    {
                        try
                        {
                            Items = JsonConvert.DeserializeObject<IEnumerable<JObject>>(bodyString, JsonSerializerSettingsInitializer.GetJsonSerializerSettings());
                        }
                        catch (ArgumentException)
                        {
                            try
                            {
                                Items = JsonConvert.DeserializeObject<IEnumerable<object>>(bodyString, JsonSerializerSettingsInitializer.GetJsonSerializerSettings());
                            }
                            catch (ArgumentException)
                            {
                                Items = new string[] { bodyString };
                            }
                        }
                        catch (JsonSerializationException)
                        {
                            Items = JsonConvert.DeserializeObject<IEnumerable<object>>(bodyString, JsonSerializerSettingsInitializer.GetJsonSerializerSettings());
                        }
                        catch (JsonReaderException)
                        {
                            Items = new string[] { bodyString };
                        }
                    }
                    break;
            }
        }