Merge branch 'master' of https://github.com/ravensorb/Newtonsoft.Json into ravensorb-master

This commit is contained in:
James Newton-King
2015-04-02 20:18:34 +13:00
3 changed files with 31 additions and 5 deletions
@@ -47,7 +47,12 @@ using NUnit.Framework;
namespace Newtonsoft.Json.Tests.Serialization namespace Newtonsoft.Json.Tests.Serialization
{ {
public interface ITaskRepository public interface IBase
{
DateTime CreatedOn { get; set; }
}
public interface ITaskRepository : IBase
{ {
string ConnectionString { get; set; } string ConnectionString { get; set; }
} }
@@ -58,7 +63,12 @@ namespace Newtonsoft.Json.Tests.Serialization
string Level { get; set; } 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; } public string ConnectionString { get; set; }
} }
@@ -202,7 +212,8 @@ namespace Newtonsoft.Json.Tests.Serialization
'Level': 'Debug' 'Level': 'Debug'
}, },
'Repository': { 'Repository': {
'ConnectionString': 'server=.' 'ConnectionString': 'server=.',
'CreatedOn': '2015-04-01 20:00'
}, },
'People': [ 'People': [
{ {
@@ -223,6 +234,7 @@ namespace Newtonsoft.Json.Tests.Serialization
Assert.IsNotNull(o); Assert.IsNotNull(o);
Assert.IsNotNull(o.Logger); Assert.IsNotNull(o.Logger);
Assert.IsNotNull(o.Repository); Assert.IsNotNull(o.Repository);
Assert.IsNotNull(o.Repository.CreatedOn);
Assert.AreEqual(2, count); Assert.AreEqual(2, count);
+2
View File
@@ -2,5 +2,7 @@
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_FIELD_ATTRIBUTE_ON_SAME_LINE/@EntryValue">False</s:Boolean> <s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_FIELD_ATTRIBUTE_ON_SAME_LINE/@EntryValue">False</s:Boolean>
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/SPACE_AROUND_MULTIPLICATIVE_OP/@EntryValue">True</s:Boolean> <s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/SPACE_AROUND_MULTIPLICATIVE_OP/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_LINES/@EntryValue">False</s:Boolean> <s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_LINES/@EntryValue">False</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EAddAccessorOwnerDeclarationBracesMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean>
</wpf:ResourceDictionary> </wpf:ResourceDictionary>
@@ -883,8 +883,20 @@ namespace Newtonsoft.Json.Utilities
{ {
ValidationUtils.ArgumentNotNull(targetType, "targetType"); ValidationUtils.ArgumentNotNull(targetType, "targetType");
List<PropertyInfo> propertyInfos = new List<PropertyInfo>(targetType.GetProperties(bindingAttr)); List<PropertyInfo> propertyInfos;
GetChildPrivateProperties(propertyInfos, targetType, bindingAttr);
if (!targetType.IsInterface())
{
propertyInfos = new List<PropertyInfo>(targetType.GetProperties(bindingAttr));
}
else
{
propertyInfos = (new Type[] { targetType })
.Concat(targetType.GetInterfaces())
.SelectMany(i => i.GetProperties(bindingAttr)).ToList();
}
GetChildPrivateProperties(propertyInfos, targetType, bindingAttr);
// a base class private getter/setter will be inaccessable unless the property was gotten from the base class // a base class private getter/setter will be inaccessable unless the property was gotten from the base class
for (int i = 0; i < propertyInfos.Count; i++) for (int i = 0; i < propertyInfos.Count; i++)