diff --git a/Src/Newtonsoft.Json.Tests/Serialization/DependencyInjectionTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/DependencyInjectionTests.cs
index 7590a785..44da8965 100644
--- a/Src/Newtonsoft.Json.Tests/Serialization/DependencyInjectionTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Serialization/DependencyInjectionTests.cs
@@ -47,7 +47,12 @@ using NUnit.Framework;
namespace Newtonsoft.Json.Tests.Serialization
{
- public interface ITaskRepository
+ public interface IBase
+ {
+ DateTime CreatedOn { get; set; }
+ }
+
+ public interface ITaskRepository : IBase
{
string ConnectionString { get; set; }
}
@@ -58,7 +63,12 @@ namespace Newtonsoft.Json.Tests.Serialization
string Level { get; set; }
}
- public class TaskRepository : ITaskRepository
+ public class Base : IBase
+ {
+ public DateTime CreatedOn { get; set; }
+ }
+
+ public class TaskRepository : Base, ITaskRepository
{
public string ConnectionString { get; set; }
}
@@ -202,7 +212,8 @@ namespace Newtonsoft.Json.Tests.Serialization
'Level': 'Debug'
},
'Repository': {
- 'ConnectionString': 'server=.'
+ 'ConnectionString': 'server=.',
+ 'CreatedOn': '2015-04-01 20:00'
},
'People': [
{
@@ -216,13 +227,14 @@ namespace Newtonsoft.Json.Tests.Serialization
'Name': 'Name3!'
}
}", new JsonSerializerSettings
- {
- ContractResolver = contractResolver
- });
+ {
+ ContractResolver = contractResolver
+ });
Assert.IsNotNull(o);
Assert.IsNotNull(o.Logger);
Assert.IsNotNull(o.Repository);
+ Assert.AreEqual(o.Repository.CreatedOn, DateTime.Parse("2015-04-01 20:00"));
Assert.AreEqual(2, count);
diff --git a/Src/Newtonsoft.Json.sln.DotSettings b/Src/Newtonsoft.Json.sln.DotSettings
index c97ec47f..6a89a056 100644
--- a/Src/Newtonsoft.Json.sln.DotSettings
+++ b/Src/Newtonsoft.Json.sln.DotSettings
@@ -2,5 +2,4 @@
False
True
False
- True
\ No newline at end of file
diff --git a/Src/Newtonsoft.Json/Utilities/ReflectionUtils.cs b/Src/Newtonsoft.Json/Utilities/ReflectionUtils.cs
index 6fd669fa..e3a3933d 100644
--- a/Src/Newtonsoft.Json/Utilities/ReflectionUtils.cs
+++ b/Src/Newtonsoft.Json/Utilities/ReflectionUtils.cs
@@ -884,6 +884,16 @@ namespace Newtonsoft.Json.Utilities
ValidationUtils.ArgumentNotNull(targetType, "targetType");
List propertyInfos = new List(targetType.GetProperties(bindingAttr));
+
+ // GetProperties on an interface doesn't return properties from its interfaces
+ if (targetType.IsInterface())
+ {
+ foreach (Type i in targetType.GetInterfaces())
+ {
+ propertyInfos.AddRange(i.GetProperties(bindingAttr));
+ }
+ }
+
GetChildPrivateProperties(propertyInfos, targetType, bindingAttr);
// a base class private getter/setter will be inaccessable unless the property was gotten from the base class