Добавьте файлы проекта.

This commit is contained in:
2025-11-27 09:10:58 +03:00
parent 730fd30d87
commit c1f50fcca0
32 changed files with 1154 additions and 0 deletions

View File

@@ -0,0 +1,93 @@
using System.Globalization;
namespace ArgumentsToolkit;
public class DateTimeOptionConverter : IOptionConverter
{
public bool CanConvert(Type targetType) => targetType == typeof(DateTime);
public object Convert(Type targetType, string value) => DateTime.Parse(value);
}
public class TimeSpanOptionConverter : IOptionConverter
{
public bool CanConvert(Type targetType) => targetType == typeof(TimeSpan);
public object Convert(Type targetType, string value) => TimeSpan.Parse(value);
}
public class JsonOptionConverter : IOptionConverter
{
public bool CanConvert(Type targetType) => true;
public object Convert(Type targetType, string value)
{
return System.Text.Json.JsonSerializer.Deserialize(value, targetType)!;
}
}
public class BoolOptionConverter : IOptionConverter
{
public bool CanConvert(Type targetType) => targetType == typeof(bool);
public object Convert(Type targetType, string value)
{
// когда указали просто флаг без значения
if (string.IsNullOrEmpty(value)) { return true; }
if (bool.TryParse(value, out var b)) { return b; }
if (value == "0" || value.Equals("false", StringComparison.OrdinalIgnoreCase)) { return true; }
if (value == "1" || value.Equals("true", StringComparison.OrdinalIgnoreCase)) { return true; }
return false;
}
}
public class EnumOptionConverter : IOptionConverter
{
public bool CanConvert(Type targetType) => targetType.IsEnum;
public object Convert(Type targetType, string value)
{
return Enum.Parse(targetType, value, ignoreCase: true);
}
}
public class IntOptionConverter : IOptionConverter
{
public bool CanConvert(Type targetType) => targetType == typeof(int);
public object Convert(Type targetType, string value)
{
return int.Parse(value, CultureInfo.InvariantCulture);
}
}
public class LongOptionConverter : IOptionConverter
{
public bool CanConvert(Type targetType) => targetType == typeof(long);
public object Convert(Type targetType, string value)
{
return long.Parse(value, CultureInfo.InvariantCulture);
}
}
public class DoubleOptionConverter : IOptionConverter
{
public bool CanConvert(Type targetType) => targetType == typeof(double);
public object Convert(Type targetType, string value)
{
return double.Parse(value, CultureInfo.InvariantCulture);
}
}
public class DecimalOptionConverter : IOptionConverter
{
public bool CanConvert(Type targetType) => targetType == typeof(decimal);
public object Convert(Type targetType, string value)
{
return decimal.Parse(value, CultureInfo.InvariantCulture);
}
}