static object CreateSurrogate(IEnumerable <JsonProperty> properties, Type type, IEnumerable value) { var data = properties.ToDictionary(property => property.PropertyName, property => { var item = property.ValueProvider.GetValue(value); return((object)(JToken)(item as string) ?? new JObject(item)); }); var result = new ExtendedEnumerableSurrogate(value, data, type); return(result); }
public object Create(ExtendedEnumerableSurrogate parameter) { var instance = (IList)Activator.CreateInstance(parameter.ReferencedType); var arrayType = resolver.ResolveContract(parameter.ReferencedType) as JsonArrayContract; if (arrayType != null) { foreach (var item in parameter.Items.Cast <JObject>()) { instance.Add(item.ToObject(arrayType.CollectionItemType, serializer)); } var result = parameter.Properties.Into(instance); return(result); } return(null); }