示例#1
0
        public dynamic ToObject(JsonApiResource jsonApiResource)
        {
            var typeResolver = _settings.TypeResolver;
            var resolvedType = typeResolver.ResolveType(jsonApiResource.Type);

            if (resolvedType == null)
            {
                throw new JsonApiTypeNotFoundException(string.Format("No type found for {0}", jsonApiResource.Type));
            }

            var resource = (dynamic)Activator.CreateInstance(resolvedType);

            var propResolver = _settings.PropertyResolver;

            var idProperty = propResolver.ResolveJsonApiId(resolvedType);
            SetParseableStringProperty(resource, idProperty, jsonApiResource.Id);

            var typeProperty = propResolver.ResolveJsonApiType(resolvedType);
            SetProperty(resource, typeProperty, jsonApiResource.Type);

            MapAttributes(resource, jsonApiResource);
            MapRelationships(resource, jsonApiResource);

            return resource;
        }
示例#2
0
        private void MapRelationships(dynamic resource, JsonApiResource jsonApiResource)
        {
            if (jsonApiResource.Relationships == null)
            {
                return;
            }

            foreach (var kvp in jsonApiResource.Relationships)
            {
                MapRelationship(resource, kvp.Key, kvp.Value);
            }
        }
示例#3
0
        private void MapAttributes(dynamic resource, JsonApiResource jsonApiResource)
        {
            if (jsonApiResource.Attributes == null)
            {
                return;
            }

            foreach (var kvp in jsonApiResource.Attributes)
            {
                var attrProperty = _settings.PropertyResolver.ResolveJsonApiAttribute(((object)resource).GetType(), kvp.Key);
                SetProperty(resource, attrProperty, kvp.Value);
            }
        }