コード例 #1
0
        private IDictionary <string, Relationship> GenerateRelationships(object instance, IResourceMapping mapping)
        {
            var relationNames = mapping.GetRelationNames().ToList();

            if (!relationNames.Any())
            {
                return(null);
            }

            var relationships = new Dictionary <string, Relationship>();

            foreach (var relationName in relationNames)
            {
                var relationTypeName = _configuration.ResourceConfigurations[mapping.GetResourceTypeOfRelation(relationName)]?.TypeName;
                if (relationTypeName == null)
                {
                    throw new JsonApiException(CausedBy.Server, $"Resource type for relation {relationName} is not configured");
                }

                var value = mapping.GetRelationValue(instance, relationName);
                if (value == null)
                {
                    return(null);
                }

                if (value is Guid)
                {
                    relationships.Add(relationName, new Relationship(relationTypeName, (Guid)value));
                }
                else if (value is IEnumerable <Guid> )
                {
                    relationships.Add(relationName, new Relationship(relationTypeName, (IEnumerable <Guid>)value));
                }
            }

            return(relationships);
        }