Skip to content

Commit 6738464

Browse files
authored
Merge pull request #74 from snoozbuster/dev
Added support for abstract classes
2 parents fae623c + 2d6652a commit 6738464

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

src/Serilog.Settings.Configuration/Settings/Configuration/StringArgumentValue.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public object ConvertTo(Type toType)
5454
if (convertor != null)
5555
return convertor(argumentValue);
5656

57-
if (toTypeInfo.IsInterface && !string.IsNullOrWhiteSpace(argumentValue))
57+
if ((toTypeInfo.IsInterface || toTypeInfo.IsAbstract) && !string.IsNullOrWhiteSpace(argumentValue))
5858
{
5959
var type = Type.GetType(argumentValue.Trim());
6060
if (type != null)

test/Serilog.Settings.Configuration.Tests/StringArgumentValueTests.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Serilog.Formatting;
22
using Serilog.Formatting.Json;
3+
using Serilog.Settings.Configuration.Tests.Support;
34
using Xunit;
45

56
namespace Serilog.Settings.Configuration.Tests
@@ -15,5 +16,15 @@ public void StringValuesConvertToDefaultInstancesIfTargetIsInterface()
1516

1617
Assert.IsType<JsonFormatter>(result);
1718
}
18-
}
19+
20+
[Fact]
21+
public void StringValuesConvertToDefaultInstancesIfTargetIsAbstractClass()
22+
{
23+
var stringArgumentValue = new StringArgumentValue(() => "Serilog.Settings.Configuration.Tests.Support.ConcreteClass, Serilog.Settings.Configuration.Tests");
24+
25+
var result = stringArgumentValue.ConvertTo(typeof(AbstractClass));
26+
27+
Assert.IsType<ConcreteClass>(result);
28+
}
29+
}
1930
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace Serilog.Settings.Configuration.Tests.Support
2+
{
3+
public abstract class AbstractClass { }
4+
5+
public class ConcreteClass : AbstractClass { }
6+
}

0 commit comments

Comments
 (0)