/// <summary>
        /// Encodes as GUID.
        /// </summary>
        /// <param name="input">The input.</param>
        /// <returns></returns>
        public static Guid EncodeAsGuid(this string input)
        {
            Mandate.ParameterNotNullOrEmpty(input, "input");

            var convertToHex = input.ConvertToHex();
            var hexLength    = convertToHex.Length < 32 ? convertToHex.Length : 32;
            var hex          = convertToHex.Substring(0, hexLength).PadLeft(32, '0');
            var output       = Guid.Empty;

            return(Guid.TryParse(hex, out output) ? output : Guid.Empty);
        }
        /// <summary>
        /// Created a new EntityIdenifier from a string instance
        /// </summary>
        /// <param name="identifier">The identifier.</param>
        /// <example>
        /// EntityIdentifier id = EntityIdentifier.FromString("{MyProviderKey}1234");
        /// </example>
        /// <returns></returns>
        /// <exception cref="System.ArgumentException">Thrown when the identifier does not match the expected format</exception>
        public static StringIdentifier FromString(string identifier)
        {
            Mandate.ParameterNotNullOrEmpty(identifier, "identifier");

            identifier = identifier.Trim('{');
            string[] keys    = identifier.Split(new[] { '}' }, 2);
            bool     isValid = Validate.Array(keys, 2, 2);

            if (!isValid)
            {
                string message =
                    Validation.UmbracoFramework_EntityGraph_EntityIdentifier_FromString__ParameterFormat;
                message = string.Format(message, identifier, GetFormattedValue(12345, "EntityProviderName"));
                throw new ArgumentException(message, "identifier");
            }

            return(new StringIdentifier(keys[1], keys[0]));
        }