some fixes

This commit is contained in:
2025-10-21 10:49:38 +02:00
parent c442e8ca89
commit 0e0f038403
28 changed files with 1070 additions and 251 deletions

View File

@@ -8,36 +8,26 @@ public sealed class EnumConverter : ValueConverter<Enum>
{
Type resultType;
bool isNullable = targetType.IsGenericType && targetType.GetGenericTypeDefinition() == typeof(Nullable<>);
if (isNullable)
Type? underlying = Nullable.GetUnderlyingType(targetType);
if (underlying != null)
{
Type[] args = targetType.GetGenericArguments();
if (args.Length != 1)
{
throw new ConverterException("Cannot convert nullable type '{0}' to enum", targetType.ToString(false));
}
if (args[0].IsEnum)
{
resultType = args[0];
}
else
{
throw new ConverterException("Cannot convert nullable type '{0}' as enum as it is not enum", targetType.ToString(false));
}
resultType = underlying;
}
else
{
if (!targetType.IsEnum)
{
resultType = targetType;
}
else
{
throw new ConverterException("Cannot convert type '{0}' as enum as it is not enum", targetType.ToString(false));
}
resultType = targetType;
}
object? result = Enum.Parse(resultType, rawValue, true);
return Task.FromResult((Enum?)result);
if (!resultType.IsEnum)
{
throw new ConverterException("Cannot convert type '{0}' as enum as it is not enum or nullable", targetType.ToString(false));
}
if (Enum.TryParse(resultType, rawValue, true, out object? result) && Enum.IsDefined(resultType, result))
{
return Task.FromResult((Enum?)result);
}
return Task.FromResult((Enum?)null);
}
}

View File

@@ -1,15 +0,0 @@
namespace CertMgr.Core.Converters.Impl;
public sealed class EnumNullableConverter : ValueConverter<Enum?>
{
protected override Task<Enum?> DoConvertAsync(string rawValue, Type targetType, CancellationToken cancellationToken)
{
if (!targetType.IsEnum)
{
throw new ConverterException("Cannot convert type '{0}' as enum as it is not enum", targetType.Name);
}
object? result = Enum.Parse(targetType, rawValue, true);
return Task.FromResult((Enum?)result);
}
}