internal ReferenceMemberInfoMetadata(MemberInfo memberInfo)
			: base(memberInfo)
		{
			Ensure
				.That(Type.IsPrimitiveType())
				.Named(() => memberInfo)
				.Is.False();

			Required = memberInfo.IsRequired();
		}
		internal PrimitiveMemberInfoMetadata(MemberInfo memberInfo)
			: base(memberInfo)
		{
			Required = memberInfo.IsRequired();

			SupportLength = Type.IsOfType<string>();

			if (!SupportLength)
			{
				return;
			}

			var stringLengthAttribute = memberInfo.GetAttribute<StringLengthAttribute>();

			if (!stringLengthAttribute.IsNotNull())
			{
				return;
			}

			length = stringLengthAttribute.MaximumLength;
		}