Browse Source

Merge pull request #3585 from AvaloniaUI/fixes/3584-convert-timespan

Use TypeConverters in TypeUtilities.TryConvert
release/0.9.4
Jumar Macato 6 years ago
committed by Dan Walmsley
parent
commit
a819eff46c
  1. 9
      src/Avalonia.Base/Utilities/TypeUtilities.cs
  2. 12
      tests/Avalonia.Base.UnitTests/Data/DefaultValueConverterTests.cs

9
src/Avalonia.Base/Utilities/TypeUtilities.cs

@ -2,6 +2,7 @@
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using System;
using System.ComponentModel;
using System.Globalization;
using System.Linq;
using System.Reflection;
@ -188,6 +189,14 @@ namespace Avalonia.Utilities
}
}
var typeConverter = TypeDescriptor.GetConverter(to);
if (typeConverter.CanConvertFrom(from) == true)
{
result = typeConverter.ConvertFrom(null, culture, value);
return true;
}
var cast = FindTypeConversionOperatorMethod(from, to, OperatorType.Implicit | OperatorType.Explicit);
if (cast != null)

12
tests/Avalonia.Base.UnitTests/Data/DefaultValueConverterTests.cs

@ -50,6 +50,18 @@ namespace Avalonia.Base.UnitTests.Data.Converters
Assert.Equal(TestEnum.Bar, result);
}
[Fact]
public void Can_Convert_String_To_TimeSpan()
{
var result = DefaultValueConverter.Instance.Convert(
"00:00:10",
typeof(TimeSpan),
null,
CultureInfo.InvariantCulture);
Assert.Equal(TimeSpan.FromSeconds(10), result);
}
[Fact]
public void Can_Convert_Int_To_Enum()
{

Loading…
Cancel
Save