From 9f1d212375058cd784e6bdaf6dddf8527be8cb70 Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 11 Sep 2013 11:57:15 +1000 Subject: [PATCH] Implements: U4-2824 Type Converter for string type with unit test --- src/Umbraco.Core/ObjectExtensions.cs | 3 +++ src/Umbraco.Tests/ObjectExtensionsTests.cs | 19 ++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Core/ObjectExtensions.cs b/src/Umbraco.Core/ObjectExtensions.cs index 434f71cb18..5bc8e46161 100644 --- a/src/Umbraco.Core/ObjectExtensions.cs +++ b/src/Umbraco.Core/ObjectExtensions.cs @@ -83,6 +83,9 @@ namespace Umbraco.Core if (input.GetType() == destinationType) return new Attempt(true, input); + //check for string so that overloaders of ToString() can take advantage of the conversion. + if (destinationType == typeof(string)) return new Attempt(true, input.ToString()); + if (!destinationType.IsGenericType || destinationType.GetGenericTypeDefinition() != typeof(Nullable<>)) { //TODO: Do a check for destination type being IEnumerable and source type implementing IEnumerable with diff --git a/src/Umbraco.Tests/ObjectExtensionsTests.cs b/src/Umbraco.Tests/ObjectExtensionsTests.cs index 788a28c4f4..6829e61a4f 100644 --- a/src/Umbraco.Tests/ObjectExtensionsTests.cs +++ b/src/Umbraco.Tests/ObjectExtensionsTests.cs @@ -115,7 +115,16 @@ namespace Umbraco.Tests } } - /// + [Test] + public virtual void CanConvertObjectToString_Using_ToString_Overload() + { + var result = new MyTestObject().TryConvertTo(); + + Assert.IsTrue(result.Success); + Assert.AreEqual("Hello world", result.Result); + } + + /// /// Run once before each test in derived test fixtures. /// public override void TestSetup() @@ -130,5 +139,13 @@ namespace Umbraco.Tests { return; } + + private class MyTestObject + { + public override string ToString() + { + return "Hello world"; + } + } } } \ No newline at end of file