diff --git a/Utility.CommandLine.Arguments/Arguments.cs b/Utility.CommandLine.Arguments/Arguments.cs index c4970b6..39e02ae 100644 --- a/Utility.CommandLine.Arguments/Arguments.cs +++ b/Utility.CommandLine.Arguments/Arguments.cs @@ -50,6 +50,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; +using System.Globalization; using System.Linq; using System.Reflection; using System.Text.RegularExpressions; @@ -452,7 +453,29 @@ private static object ChangeType(object value, string argument, Type toType) { try { - return Convert.ChangeType(value, toType); + if (toType == typeof(System.Boolean)) + { + string myValue = value.ToString(); + if ((myValue.Length == 0) + || (string.Equals(myValue, "yes", StringComparison.OrdinalIgnoreCase)) + || (string.Equals(myValue, "y", StringComparison.OrdinalIgnoreCase)) + || (string.Equals(myValue, "true", StringComparison.OrdinalIgnoreCase)) + || (string.Equals(myValue, "t", StringComparison.OrdinalIgnoreCase))) + { + return true; + } + else + if ((string.Equals(myValue, "no", StringComparison.OrdinalIgnoreCase)) + || (string.Equals(myValue, "n", StringComparison.OrdinalIgnoreCase)) + || (string.Equals(myValue, "false", StringComparison.OrdinalIgnoreCase)) + || (string.Equals(myValue, "f", StringComparison.OrdinalIgnoreCase))) + { + return false; + } + + return Convert.ToBoolean(value); + } + return Convert.ChangeType(value, toType, CultureInfo.InvariantCulture); } catch (Exception ex) {