UtilJsonApiSerializer.Conventions.Impl.DefaultPropertyScanningConvention.IsLinkedResource C# (CSharp) Method

IsLinkedResource() public method

Used to distinguish simple properties (serialized in-line) from linked resources (side-loaded in "linked" section).
public IsLinkedResource ( PropertyInfo pi ) : bool
pi System.Reflection.PropertyInfo
return bool
        public virtual bool IsLinkedResource(PropertyInfo pi)
        {
            var type = pi.PropertyType;
            bool isPrimitiveType = IsMarkedSerializeAsPrimitive(pi) || type.IsPrimitive || type.IsValueType || (type == typeof(string) || (type == typeof(DateTime)) || (type == typeof(TimeSpan)) || (type == typeof(DateTimeOffset)));
            return !isPrimitiveType;
        }

Usage Example

        public void Distinguishes_linked_resources()
        {
            // Arrange
            var convention = new DefaultPropertyScanningConvention();
            var titlePi = typeof(Post).GetProperty("Title");
            var authorPi = typeof(Post).GetProperty("Author");
            var repliesPi = typeof(Post).GetProperty("Replies");

            // Act
            var titleIsLinkedResource = convention.IsLinkedResource(titlePi);
            var authorIsLinkedResource = convention.IsLinkedResource(authorPi);
            var repliesIsLinkedResource = convention.IsLinkedResource(repliesPi);

            // Assert
            titleIsLinkedResource.ShouldBeFalse();
            authorIsLinkedResource.ShouldBeTrue();
            repliesIsLinkedResource.ShouldBeTrue();
        }