Exemple #1
0
        static byte[] NumToBytes <T>(string input, TryParseHandler <T> tryParse, Func <T, byte[]> converter, bool reverse)
        {
            var strs = input.Split(',', ' ', '\t', '\r', '\n').Where(str => !string.IsNullOrWhiteSpace(str)).ToList();

            byte[] result = null;
            for (var ctr = 0; ctr < strs.Count; ++ctr)
            {
                T value;
                if (!tryParse(strs[ctr], out value))
                {
                    return(null);
                }
                var bytes = converter(value);
                if (reverse)
                {
                    Array.Reverse(bytes);
                }

                if (result == null)
                {
                    result = new byte[strs.Count * bytes.Length];
                }
                Array.Copy(bytes, 0, result, ctr * bytes.Length, bytes.Length);
            }
            return(result ?? new byte[0]);
        }
        private static T TryParse <T>(object v, int index, TryParseHandler <T> handler)
        {
            var result = default(T);

            if (v == null)
            {
                return(result);
            }

            var data = v.ToString().Split(seporator);

            if (data.Length != 3)
            {
                return(result);
            }

            if (index < 0 || index > 2)
            {
                return(result);
            }

            if (string.IsNullOrEmpty(data[index]))
            {
                return(result);
            }

            handler(data[index], out result);

            return(result);
        }
Exemple #3
0
        protected bool TryParseValues <T>(string key, TryParseHandler <T> handler, out T[] result)
            where T : struct
        {
            result = null;
            if (string.IsNullOrEmpty(key))
            {
                return(false);
            }
            if (!TryGetValue(key, out var values))
            {
                return(false);
            }

            var results = new List <T>();

            foreach (var v in values)
            {
                if (handler(v, out var value))
                {
                    results.Add(value);
                }
            }
            if (!values.Length.Equals(results.Count))
            {
                return(false);
            }

            result = results.ToArray();
            return(true);
        }
 public SwitchProperty(string key, string valueDescription, string description, TryParseHandler parser,
                       AssignHandler assigner)
 {
     this.key = key;
     this.valueDescription = valueDescription;
     this.description      = description;
     _parser   = parser;
     _assigner = assigner;
 }
Exemple #5
0
        public static TryParseHandler <T> GetTryParse()
        {
            if (tryParser == null)
            {
                tryParser = GetTryParseMethod();
            }

            return(tryParser);
        }
Exemple #6
0
        private T readOrCreateValue <T>(string key, T value, TryParseHandler <T> handler)
        {
            if (!(GetAppSettingValue(key) != null && handler(GetAppSettingValue(key), out value)))
            {
                SetAppSetting(key, value);
            }

            return(value);
        }
Exemple #7
0
        private T GetAttribute <T>(XmlElement element, string attribute, TryParseHandler <T> handler)
        {
            T result;

            if (!handler(element.GetAttribute(attribute), out result))
            {
                throw new XmlException("Invalid " + typeof(T).Name + " " + attribute + " for element " + element.Name + "!");
            }
            return(result);
        }
Exemple #8
0
        private static T WaitForParse <T>(TryParseHandler <T> handler, string prompt, Func <T, bool> validator = null)
        {
            T output = default(T);

            do
            {
                InputHelper.Prompt(prompt);
            }while (!handler(Console.ReadLine(), out output) || !(validator != null ? validator(output) : true));
            return(output);
        }
Exemple #9
0
        private T GetAttribute <T>(XmlElement element, string attribute, TryParseHandler <T> handler, T defaultValue)
        {
            T result;

            if (handler(element.GetAttribute(attribute), out result))
            {
                return(result);
            }
            return(defaultValue);
        }
Exemple #10
0
        public static bool TryParse <T>(string sval, string name, out T val, TryParseHandler <T> handler) where T : struct
        {
            bool worked = handler(sval, out val);

            if (!worked)
            {
                Console.WriteLine("Could not parse " + name + " value " + sval);
            }
            return(worked);
        }
 private T ParseValue <T>(TryParseHandler <T> handler, string value) where T : struct
 {
     if (handler(value, out T result))
     {
         return(result);
     }
     else
     {
         throw new ArgumentException();
     }
 }
        private static bool Is <T>(string value, TryParseHandler <T> handler) where T : struct
        {
            if (string.IsNullOrEmpty(value))
            {
                return(false);
            }

            T result;

            return(handler(value, out result));
        }
Exemple #13
0
        /// <summary>
        /// Either successfully parses the provided string value or returns specified default value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="value">The string value to parse.</param>
        /// <param name="tryParseHandler">The try parse handler.</param>
        /// <param name="defaultValue">The default value.</param>
        /// <returns>T.</returns>
        public static T ParseOrDefault <T>(string?value, TryParseHandler <T> tryParseHandler, T defaultValue) where T : struct
        {
            T?result = StringUtility.Parse <T>(value, tryParseHandler);

            if (result.HasValue)
            {
                return(result.Value);
            }

            return(defaultValue);
        }
Exemple #14
0
        private T GetClaim <T>(string claimType, TryParseHandler <T> handler, T @default = default(T))
        {
            string value = User?.FindFirst(claimType)?.Value;

            if (!handler(value, out T result))
            {
                return(@default);
            }

            return(result);
        }
Exemple #15
0
 /// <summary>
 /// Считывает с пользовательского интерфейса объект.
 /// </summary>
 /// <param name="message">Сообщение, которое надо напечатать пользователю.</param>
 /// <param name="parse">Метод считывания TryParse, с помощью которого будет преобразована строка в объект.</param>
 /// <typeparam name="T">Указывает, в какой тип надо преобразовывать объект.</typeparam>
 /// <returns>Считанный объект от пользователя.</returns>
 public static T GetNumber <T>(string message, TryParseHandler <T> parse)
 {
     while (true)
     {
         Console.Write(message);
         if (parse(Console.ReadLine(), out T output))
         {
             return(output);
         }
         Console.WriteLine($"\"{output}\" не может быть прочитан с помощью {parse.Method}");
     }
 }
 public static T?TryParse <T>(string value, TryParseHandler <T> handler) where T : struct
 {
     if (string.IsNullOrEmpty(value))
     {
         return(null);
     }
     if (handler(value, out T result))
     {
         return(result);
     }
     return(null);
 }
Exemple #17
0
 public static bool FindParseSuccess <T>(IEnumerable <object> array, TryParseHandler <T> tryParse)
 {
     foreach (object item in array)
     {
         T v;
         if (!tryParse(item.ToString(), out v))
         {
             return(false);
         }
     }
     return(true);
 }
Exemple #18
0
        internal static T TryParseWithDefault <T>(this String value, T defaultValue, TryParseHandler <T> handler)
        {
            if (String.IsNullOrEmpty(value))
            {
                return(defaultValue);
            }
            T result;

            return((handler(value, out result))
                        ? result
                        : defaultValue);
        }
Exemple #19
0
 protected bool TryParseValue <T>(string key, TryParseHandler <T> handler, out T result)
     where T : struct
 {
     result = default;
     if (string.IsNullOrEmpty(key))
     {
         return(false);
     }
     if (!TryGetValue(key, out var values))
     {
         return(false);
     }
     return(values.Length.Equals(1) && handler(values[0], out result));
 }
Exemple #20
0
        public static T TryParse <T>(this string s, TryParseHandler <T> handler) where T : struct
        {
            if (string.IsNullOrEmpty(s))
            {
                return(default(T));
            }
            T temp;

            if (handler(s, out temp))
            {
                return(temp);
            }
            return(default(T));
        }
Exemple #21
0
        // TODO: add GetRequiredConfigOption which will throw if it is null or empty

        public T GetConfigOption <T>(string json, TryParseHandler <T> handler)
        {
            if (string.IsNullOrEmpty(_config[json]))
            {
                return(default(T));
            }

            if (handler(_config[json], out T parsed))
            {
                return(parsed);
            }

            return(default(T));
        }
    private static TypeDonnees Read <TypeDonnees>(TextReader p_tr, TryParseHandler <TypeDonnees> p_handler)
    {
        string      str         = Console.In.ReadLine();
        TypeDonnees parsedValue = default(TypeDonnees);

        if (!p_handler(str, out parsedValue))
        {
            string methodName = (new StackTrace()).GetFrame(1).GetMethod().Name;
            Console.Error.WriteLine($"Impossible de lire le type demandé par la méthode {methodName} !");
            Environment.Exit(1);
        }

        return(parsedValue);
    }
Exemple #23
0
        public static T TryParse <T>(string value, TryParseHandler <T> handler) where T : struct
        {
            if (handler == null)
            {
                throw new ArgumentNullException("handler");
            }
            T result;

            if (string.IsNullOrEmpty(value) == false && handler(value, out result))
            {
                return(result);
            }
            return(default(T));
        }
Exemple #24
0
        protected T TryParse <T>(string value, TryParseHandler <T> handler)
        {
            if (string.IsNullOrEmpty(value))
            {
                return(default(T));
            }
            T result;

            if (handler(value, out result))
            {
                return(result);
            }
            Trace.TraceWarning("Invalid value '{0}'", value);
            return(default(T));
        }
        //http://stackoverflow.com/questions/2961656/generic-tryparse

        //Turns the common bool TryParse(string,out T) into a function that returns nullable types.
        public static T?TryParse <T>(string value, TryParseHandler <T> handler) where T : struct
        {
            if (String.IsNullOrEmpty(value))
            {
                return(null);
            }
            T result;

            if (handler(value, out result))
            {
                return(result);
            }
            //Trace.TraceWarning("Invalid value '{0}'", value);
            return(null);
        }
Exemple #26
0
        /// <summary>
        /// Either successfully parses the provided string value or returns null.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="value">The string value to parse.</param>
        /// <param name="tryParseHandler">The try parse handler.</param>
        /// <returns>System.Nullable&lt;T&gt;.</returns>
        public static T?Parse <T>(string?value, TryParseHandler <T> tryParseHandler) where T : struct
        {
            if (string.IsNullOrEmpty(value))
            {
                return(null);
            }

            if (tryParseHandler(value, out T result))
            {
                return(result);
            }

            traceSource.TraceEvent(TraceEventType.Warning, 0, $"Invalid value '{value}'");
            return(null);
        }
Exemple #27
0
 static private TryParseHandler <T> TryGetTryParseHandler <T>(Type t)
 {
     MemberInfo[] members;
     members = t.GetMember("TryParse", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.InvokeMethod);
     foreach (MethodInfo mi in members)
     {
         ParameterInfo[] parameters = mi.GetParameters();
         if (parameters[0].ParameterType == typeof(string) &&
             parameters[1].ParameterType.FullName == typeof(T).FullName + "&")
         {
             TryParseHandler <T> parseHandler = (TryParseHandler <T>)Delegate.CreateDelegate(typeof(TryParseHandler <T>), mi);
             return((TryParseHandler <T>)parseHandler);
         }
     }
     return(null);
 }
        private T TryParseValue <T>(XmlNode targetNode, TryParseHandler <T> tryParseHandler)
        {
            if (string.IsNullOrWhiteSpace(targetNode.InnerText))
            {
                throw new Exception(
                          $"XML configuration is invalid: node '{targetNode.LocalName}' must have value.");
            }

            if (tryParseHandler(targetNode.InnerText, out var valueResult))
            {
                return(valueResult);
            }

            throw new Exception(
                      $"XML configuration is invalid: node '{targetNode.LocalName}' must have type '{typeof(T).FullName}'");
        }
Exemple #29
0
 private static T GenericTo <T>(object input, T defaultValue, TryParseHandler <T> tryParseMethod)
 {
     if (input is T t)
     {
         return(t);
     }
     if (input == null)
     {
         return(defaultValue);
     }
     if (tryParseMethod(input.ToStringSafe(string.Empty), out var parsed))
     {
         return(parsed);
     }
     return(defaultValue);
 }
Exemple #30
0
        void TryStringConversion <T>(ref object obj, TryParseHandler <T> tryParse)
        {
            if (!(obj is string))
            {
                return;
            }

            T value;

            if (!tryParse(obj as string, out value))
            {
                return;
            }

            obj = value;
        }