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);
        }
示例#2
0
        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);
        }