private static void ReadBoundAttribute(BoundAttributeDescriptorBuilder builder, JObject attribute, JsonSerializer serializer) { var descriptorKind = attribute[nameof(BoundAttributeDescriptor.Kind)].Value <string>(); var name = attribute[nameof(BoundAttributeDescriptor.Name)].Value <string>(); var typeName = attribute[nameof(BoundAttributeDescriptor.TypeName)].Value <string>(); var isEnum = attribute[nameof(BoundAttributeDescriptor.IsEnum)].Value <bool>(); var indexerNamePrefix = attribute[nameof(BoundAttributeDescriptor.IndexerNamePrefix)].Value <string>(); var indexerTypeName = attribute[nameof(BoundAttributeDescriptor.IndexerTypeName)].Value <string>(); var documentation = attribute[nameof(BoundAttributeDescriptor.Documentation)].Value <string>(); var diagnostics = attribute[nameof(BoundAttributeDescriptor.Diagnostics)].Value <JArray>(); var metadata = attribute[nameof(BoundAttributeDescriptor.Metadata)].Value <JObject>(); var boundAttributeParameters = attribute[nameof(BoundAttributeDescriptor.BoundAttributeParameters)].Value <JArray>(); builder.Name = name; builder.TypeName = typeName; builder.Documentation = documentation; if (indexerNamePrefix != null) { builder.AsDictionary(indexerNamePrefix, indexerTypeName); } if (isEnum) { builder.IsEnum = true; } foreach (var diagnostic in diagnostics) { var diagnosticReader = diagnostic.CreateReader(); var diagnosticObject = serializer.Deserialize <RazorDiagnostic>(diagnosticReader); builder.Diagnostics.Add(diagnosticObject); } var metadataReader = metadata.CreateReader(); var metadataValue = serializer.Deserialize <Dictionary <string, string> >(metadataReader); foreach (var item in metadataValue) { builder.Metadata[item.Key] = item.Value; } foreach (var boundAttributeParameter in boundAttributeParameters) { var parameter = boundAttributeParameter.Value <JObject>(); builder.BindAttributeParameter(b => ReadBoundAttributeParameter(b, parameter, serializer)); } }
private static void ReadBoundAttribute(BoundAttributeDescriptorBuilder builder, JObject attribute, JsonSerializer serializer) { attribute["Kind"].Value <string>(); string name = attribute["Name"].Value <string>(); string typeName = attribute["TypeName"].Value <string>(); bool flag = attribute["IsEnum"].Value <bool>(); string text = attribute["IndexerNamePrefix"].Value <string>(); string valueTypeName = attribute["IndexerTypeName"].Value <string>(); string documentation = attribute["Documentation"].Value <string>(); JArray jArray = attribute["Diagnostics"].Value <JArray>(); JObject jObject = attribute["Metadata"].Value <JObject>(); JArray jArray2 = attribute["BoundAttributeParameters"].Value <JArray>(); builder.Name = name; builder.TypeName = typeName; builder.Documentation = documentation; if (text != null) { builder.AsDictionary(text, valueTypeName); } if (flag) { builder.IsEnum = true; } foreach (JToken item2 in jArray) { JsonReader reader = item2.CreateReader(); RazorDiagnostic item = serializer.Deserialize <RazorDiagnostic>(reader); builder.Diagnostics.Add(item); } JsonReader reader2 = jObject.CreateReader(); foreach (KeyValuePair <string, string> item3 in serializer.Deserialize <Dictionary <string, string> >(reader2)) { builder.Metadata[item3.Key] = item3.Value; } foreach (JToken item4 in jArray2) { JObject parameter = item4.Value <JObject>(); builder.BindAttributeParameter(delegate(BoundAttributeParameterDescriptorBuilder b) { ReadBoundAttributeParameter(b, parameter, serializer); }); } }
private static void ReadBoundAttributeParameter(JsonReader reader, BoundAttributeDescriptorBuilder builder) { if (!reader.Read()) { return; } if (reader.TokenType != JsonToken.StartObject) { return; } builder.BindAttributeParameter(parameter => { reader.ReadProperties(propertyName => { switch (propertyName) { case nameof(BoundAttributeParameterDescriptor.Name): if (reader.Read()) { var name = (string)reader.Value; parameter.Name = name; } break; case nameof(BoundAttributeParameterDescriptor.TypeName): if (reader.Read()) { var typeName = (string)reader.Value; parameter.TypeName = typeName; } break; case nameof(BoundAttributeParameterDescriptor.IsEnum): if (reader.Read()) { var isEnum = (bool)reader.Value; parameter.IsEnum = isEnum; } break; case nameof(BoundAttributeParameterDescriptor.Documentation): if (reader.Read()) { var documentation = (string)reader.Value; parameter.Documentation = documentation; } break; case nameof(BoundAttributeParameterDescriptor.Metadata): ReadMetadata(reader, parameter.Metadata); break; case nameof(BoundAttributeParameterDescriptor.Diagnostics): ReadDiagnostics(reader, parameter.Diagnostics); break; } }); }); }