some fixes
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user