-Fixed not replacing ignored properties in JsonPropertyCollection
This commit is contained in:
@@ -92,6 +92,7 @@
|
|||||||
<Compile Include="Linq\JPathTests.cs" />
|
<Compile Include="Linq\JPathTests.cs" />
|
||||||
<Compile Include="Linq\JRawTests.cs" />
|
<Compile Include="Linq\JRawTests.cs" />
|
||||||
<Compile Include="Serialization\ConstructorHandlingTests.cs" />
|
<Compile Include="Serialization\ConstructorHandlingTests.cs" />
|
||||||
|
<Compile Include="Serialization\JsonPropertyCollectionTests.cs" />
|
||||||
<Compile Include="TestObjects\Bar.cs" />
|
<Compile Include="TestObjects\Bar.cs" />
|
||||||
<Compile Include="TestObjects\Car.cs" />
|
<Compile Include="TestObjects\Car.cs" />
|
||||||
<Compile Include="TestObjects\Computer.cs" />
|
<Compile Include="TestObjects\Computer.cs" />
|
||||||
@@ -107,6 +108,9 @@
|
|||||||
<Compile Include="TestObjects\GoogleMapGeocoderStructure.cs" />
|
<Compile Include="TestObjects\GoogleMapGeocoderStructure.cs" />
|
||||||
<Compile Include="TestObjects\HolderClass.cs" />
|
<Compile Include="TestObjects\HolderClass.cs" />
|
||||||
<Compile Include="TestObjects\InterfacePropertyTestClass.cs" />
|
<Compile Include="TestObjects\InterfacePropertyTestClass.cs" />
|
||||||
|
<Compile Include="TestObjects\IPrivateImplementationA.cs" />
|
||||||
|
<Compile Include="TestObjects\IPrivateImplementationB.cs" />
|
||||||
|
<Compile Include="TestObjects\IPrivateOverriddenImplementation.cs" />
|
||||||
<Compile Include="TestObjects\JsonPropertyClass.cs" />
|
<Compile Include="TestObjects\JsonPropertyClass.cs" />
|
||||||
<Compile Include="Serialization\JsonSerializerTest.cs" />
|
<Compile Include="Serialization\JsonSerializerTest.cs" />
|
||||||
<Compile Include="TestObjects\ListOfIds.cs" />
|
<Compile Include="TestObjects\ListOfIds.cs" />
|
||||||
@@ -121,6 +125,8 @@
|
|||||||
<Compile Include="TestObjects\PersonPropertyClass.cs" />
|
<Compile Include="TestObjects\PersonPropertyClass.cs" />
|
||||||
<Compile Include="TestObjects\PrivateConstructorTestClass.cs" />
|
<Compile Include="TestObjects\PrivateConstructorTestClass.cs" />
|
||||||
<Compile Include="TestObjects\PrivateConstructorWithPublicParametizedConstructorTestClass.cs" />
|
<Compile Include="TestObjects\PrivateConstructorWithPublicParametizedConstructorTestClass.cs" />
|
||||||
|
<Compile Include="TestObjects\PrivateImplementationAClass.cs" />
|
||||||
|
<Compile Include="TestObjects\PrivateImplementationBClass.cs" />
|
||||||
<Compile Include="TestObjects\PropertyCase.cs" />
|
<Compile Include="TestObjects\PropertyCase.cs" />
|
||||||
<Compile Include="TestObjects\PublicParametizedConstructorRequiringConverterTestClass.cs" />
|
<Compile Include="TestObjects\PublicParametizedConstructorRequiringConverterTestClass.cs" />
|
||||||
<Compile Include="TestObjects\PublicParametizedConstructorTestClass.cs" />
|
<Compile Include="TestObjects\PublicParametizedConstructorTestClass.cs" />
|
||||||
|
|||||||
@@ -129,6 +129,7 @@
|
|||||||
<Compile Include="Serialization\DefaultValueHandlingTests.cs" />
|
<Compile Include="Serialization\DefaultValueHandlingTests.cs" />
|
||||||
<Compile Include="Serialization\DynamicTests.cs" />
|
<Compile Include="Serialization\DynamicTests.cs" />
|
||||||
<Compile Include="Serialization\EntitiesSerializationTests.cs" />
|
<Compile Include="Serialization\EntitiesSerializationTests.cs" />
|
||||||
|
<Compile Include="Serialization\JsonPropertyCollectionTests.cs" />
|
||||||
<Compile Include="Serialization\JsonSerializerTest.cs" />
|
<Compile Include="Serialization\JsonSerializerTest.cs" />
|
||||||
<Compile Include="Serialization\MissingMemberHandlingTests.cs" />
|
<Compile Include="Serialization\MissingMemberHandlingTests.cs" />
|
||||||
<Compile Include="Serialization\NullValueHandlingTests.cs" />
|
<Compile Include="Serialization\NullValueHandlingTests.cs" />
|
||||||
@@ -170,6 +171,9 @@
|
|||||||
<Compile Include="TestObjects\IncompatibleJsonAttributeClass.cs" />
|
<Compile Include="TestObjects\IncompatibleJsonAttributeClass.cs" />
|
||||||
<Compile Include="TestObjects\InterfacePropertyTestClass.cs" />
|
<Compile Include="TestObjects\InterfacePropertyTestClass.cs" />
|
||||||
<Compile Include="TestObjects\Invoice.cs" />
|
<Compile Include="TestObjects\Invoice.cs" />
|
||||||
|
<Compile Include="TestObjects\IPrivateImplementationA.cs" />
|
||||||
|
<Compile Include="TestObjects\IPrivateImplementationB.cs" />
|
||||||
|
<Compile Include="TestObjects\IPrivateOverriddenImplementation.cs" />
|
||||||
<Compile Include="TestObjects\JaggedArray.cs" />
|
<Compile Include="TestObjects\JaggedArray.cs" />
|
||||||
<Compile Include="TestObjects\JsonIgnoreAttributeTestClass.cs" />
|
<Compile Include="TestObjects\JsonIgnoreAttributeTestClass.cs" />
|
||||||
<Compile Include="TestObjects\JsonPropertyClass.cs" />
|
<Compile Include="TestObjects\JsonPropertyClass.cs" />
|
||||||
@@ -193,6 +197,8 @@
|
|||||||
<Compile Include="TestObjects\PhoneNumber.cs" />
|
<Compile Include="TestObjects\PhoneNumber.cs" />
|
||||||
<Compile Include="TestObjects\PrivateConstructorTestClass.cs" />
|
<Compile Include="TestObjects\PrivateConstructorTestClass.cs" />
|
||||||
<Compile Include="TestObjects\PrivateConstructorWithPublicParametizedConstructorTestClass.cs" />
|
<Compile Include="TestObjects\PrivateConstructorWithPublicParametizedConstructorTestClass.cs" />
|
||||||
|
<Compile Include="TestObjects\PrivateImplementationAClass.cs" />
|
||||||
|
<Compile Include="TestObjects\PrivateImplementationBClass.cs" />
|
||||||
<Compile Include="TestObjects\PrivateMembersClass.cs" />
|
<Compile Include="TestObjects\PrivateMembersClass.cs" />
|
||||||
<Compile Include="TestObjects\PropertyCase.cs" />
|
<Compile Include="TestObjects\PropertyCase.cs" />
|
||||||
<Compile Include="TestObjects\PublicParametizedConstructorRequiringConverterTestClass.cs" />
|
<Compile Include="TestObjects\PublicParametizedConstructorRequiringConverterTestClass.cs" />
|
||||||
|
|||||||
@@ -92,6 +92,7 @@
|
|||||||
<Compile Include="Serialization\DefaultValueHandlingTests.cs" />
|
<Compile Include="Serialization\DefaultValueHandlingTests.cs" />
|
||||||
<Compile Include="Serialization\DynamicTests.cs" />
|
<Compile Include="Serialization\DynamicTests.cs" />
|
||||||
<Compile Include="Serialization\EntitiesSerializationTests.cs" />
|
<Compile Include="Serialization\EntitiesSerializationTests.cs" />
|
||||||
|
<Compile Include="Serialization\JsonPropertyCollectionTests.cs" />
|
||||||
<Compile Include="Serialization\JsonSerializerTest.cs" />
|
<Compile Include="Serialization\JsonSerializerTest.cs" />
|
||||||
<Compile Include="Serialization\MissingMemberHandlingTests.cs" />
|
<Compile Include="Serialization\MissingMemberHandlingTests.cs" />
|
||||||
<Compile Include="Serialization\NullValueHandlingTests.cs" />
|
<Compile Include="Serialization\NullValueHandlingTests.cs" />
|
||||||
@@ -133,6 +134,9 @@
|
|||||||
<Compile Include="TestObjects\IncompatibleJsonAttributeClass.cs" />
|
<Compile Include="TestObjects\IncompatibleJsonAttributeClass.cs" />
|
||||||
<Compile Include="TestObjects\InterfacePropertyTestClass.cs" />
|
<Compile Include="TestObjects\InterfacePropertyTestClass.cs" />
|
||||||
<Compile Include="TestObjects\Invoice.cs" />
|
<Compile Include="TestObjects\Invoice.cs" />
|
||||||
|
<Compile Include="TestObjects\IPrivateImplementationA.cs" />
|
||||||
|
<Compile Include="TestObjects\IPrivateImplementationB.cs" />
|
||||||
|
<Compile Include="TestObjects\IPrivateOverriddenImplementation.cs" />
|
||||||
<Compile Include="TestObjects\JaggedArray.cs" />
|
<Compile Include="TestObjects\JaggedArray.cs" />
|
||||||
<Compile Include="TestObjects\JsonIgnoreAttributeTestClass.cs" />
|
<Compile Include="TestObjects\JsonIgnoreAttributeTestClass.cs" />
|
||||||
<Compile Include="TestObjects\JsonPropertyClass.cs" />
|
<Compile Include="TestObjects\JsonPropertyClass.cs" />
|
||||||
@@ -156,6 +160,8 @@
|
|||||||
<Compile Include="TestObjects\PhoneNumber.cs" />
|
<Compile Include="TestObjects\PhoneNumber.cs" />
|
||||||
<Compile Include="TestObjects\PrivateConstructorTestClass.cs" />
|
<Compile Include="TestObjects\PrivateConstructorTestClass.cs" />
|
||||||
<Compile Include="TestObjects\PrivateConstructorWithPublicParametizedConstructorTestClass.cs" />
|
<Compile Include="TestObjects\PrivateConstructorWithPublicParametizedConstructorTestClass.cs" />
|
||||||
|
<Compile Include="TestObjects\PrivateImplementationAClass.cs" />
|
||||||
|
<Compile Include="TestObjects\PrivateImplementationBClass.cs" />
|
||||||
<Compile Include="TestObjects\PrivateMembersClass.cs" />
|
<Compile Include="TestObjects\PrivateMembersClass.cs" />
|
||||||
<Compile Include="TestObjects\PropertyCase.cs" />
|
<Compile Include="TestObjects\PropertyCase.cs" />
|
||||||
<Compile Include="TestObjects\PublicParametizedConstructorRequiringConverterTestClass.cs" />
|
<Compile Include="TestObjects\PublicParametizedConstructorRequiringConverterTestClass.cs" />
|
||||||
|
|||||||
@@ -143,6 +143,7 @@
|
|||||||
<Compile Include="Serialization\ContractResolverTests.cs" />
|
<Compile Include="Serialization\ContractResolverTests.cs" />
|
||||||
<Compile Include="Serialization\DefaultValueHandlingTests.cs" />
|
<Compile Include="Serialization\DefaultValueHandlingTests.cs" />
|
||||||
<Compile Include="Serialization\DynamicTests.cs" />
|
<Compile Include="Serialization\DynamicTests.cs" />
|
||||||
|
<Compile Include="Serialization\JsonPropertyCollectionTests.cs" />
|
||||||
<Compile Include="Serialization\NullValueHandlingTests.cs" />
|
<Compile Include="Serialization\NullValueHandlingTests.cs" />
|
||||||
<Compile Include="TestObjects\Bar.cs" />
|
<Compile Include="TestObjects\Bar.cs" />
|
||||||
<Compile Include="TestObjects\Car.cs" />
|
<Compile Include="TestObjects\Car.cs" />
|
||||||
@@ -153,6 +154,9 @@
|
|||||||
<Compile Include="TestObjects\ContentSubClass.cs" />
|
<Compile Include="TestObjects\ContentSubClass.cs" />
|
||||||
<Compile Include="TestObjects\Foo.cs" />
|
<Compile Include="TestObjects\Foo.cs" />
|
||||||
<Compile Include="TestObjects\HolderClass.cs" />
|
<Compile Include="TestObjects\HolderClass.cs" />
|
||||||
|
<Compile Include="TestObjects\IPrivateImplementationA.cs" />
|
||||||
|
<Compile Include="TestObjects\IPrivateImplementationB.cs" />
|
||||||
|
<Compile Include="TestObjects\IPrivateOverriddenImplementation.cs" />
|
||||||
<Compile Include="TestObjects\ListOfIds.cs" />
|
<Compile Include="TestObjects\ListOfIds.cs" />
|
||||||
<Compile Include="TestObjects\Movie.cs" />
|
<Compile Include="TestObjects\Movie.cs" />
|
||||||
<Compile Include="TestObjects\PersonError.cs" />
|
<Compile Include="TestObjects\PersonError.cs" />
|
||||||
@@ -183,6 +187,8 @@
|
|||||||
<Compile Include="TestObjects\LogEntry.cs" />
|
<Compile Include="TestObjects\LogEntry.cs" />
|
||||||
<Compile Include="TestObjects\NonRequest.cs" />
|
<Compile Include="TestObjects\NonRequest.cs" />
|
||||||
<Compile Include="TestObjects\ObjectArrayPropertyTest.cs" />
|
<Compile Include="TestObjects\ObjectArrayPropertyTest.cs" />
|
||||||
|
<Compile Include="TestObjects\PrivateImplementationAClass.cs" />
|
||||||
|
<Compile Include="TestObjects\PrivateImplementationBClass.cs" />
|
||||||
<Compile Include="TestObjects\PublicParametizedConstructorRequiringConverterTestClass.cs" />
|
<Compile Include="TestObjects\PublicParametizedConstructorRequiringConverterTestClass.cs" />
|
||||||
<Compile Include="TestObjects\PublicParametizedConstructorTestClass.cs" />
|
<Compile Include="TestObjects\PublicParametizedConstructorTestClass.cs" />
|
||||||
<Compile Include="TestObjects\PublicParametizedConstructorWithNonPropertyParameterTestClass.cs" />
|
<Compile Include="TestObjects\PublicParametizedConstructorWithNonPropertyParameterTestClass.cs" />
|
||||||
|
|||||||
@@ -66,5 +66,5 @@ using System.Runtime.InteropServices;
|
|||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
[assembly: AssemblyVersion("4.0.7.0")]
|
[assembly: AssemblyVersion("4.0.7.0")]
|
||||||
#if !PocketPC
|
#if !PocketPC
|
||||||
[assembly: AssemblyFileVersion("4.0.7.14603")]
|
[assembly: AssemblyFileVersion("4.0.7.14610")]
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -0,0 +1,57 @@
|
|||||||
|
#region License
|
||||||
|
// Copyright (c) 2007 James Newton-King
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person
|
||||||
|
// obtaining a copy of this software and associated documentation
|
||||||
|
// files (the "Software"), to deal in the Software without
|
||||||
|
// restriction, including without limitation the rights to use,
|
||||||
|
// copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the
|
||||||
|
// Software is furnished to do so, subject to the following
|
||||||
|
// conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be
|
||||||
|
// included in all copies or substantial portions of the Software.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
// OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using Newtonsoft.Json.Serialization;
|
||||||
|
using Newtonsoft.Json.Tests.TestObjects;
|
||||||
|
|
||||||
|
namespace Newtonsoft.Json.Tests.Serialization
|
||||||
|
{
|
||||||
|
public class JsonPropertyCollectionTests : TestFixtureBase
|
||||||
|
{
|
||||||
|
[Test]
|
||||||
|
public void AddPropertyIncludesPrivateImplementations()
|
||||||
|
{
|
||||||
|
var value = new PrivateImplementationBClass
|
||||||
|
{
|
||||||
|
OverriddenProperty = "OverriddenProperty",
|
||||||
|
PropertyA = "PropertyA",
|
||||||
|
PropertyB = "PropertyB"
|
||||||
|
};
|
||||||
|
|
||||||
|
var resolver = new DefaultContractResolver();
|
||||||
|
var contract = (JsonObjectContract) resolver.ResolveContract(value.GetType());
|
||||||
|
|
||||||
|
Assert.AreEqual(3, contract.Properties.Count);
|
||||||
|
Assert.IsTrue(contract.Properties.Contains("OverriddenProperty"), "Contract is missing property 'OverriddenProperty'");
|
||||||
|
Assert.IsTrue(contract.Properties.Contains("PropertyA"), "Contract is missing property 'PropertyA'");
|
||||||
|
Assert.IsTrue(contract.Properties.Contains("PropertyB"), "Contract is missing property 'PropertyB'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
#region License
|
||||||
|
// Copyright (c) 2007 James Newton-King
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person
|
||||||
|
// obtaining a copy of this software and associated documentation
|
||||||
|
// files (the "Software"), to deal in the Software without
|
||||||
|
// restriction, including without limitation the rights to use,
|
||||||
|
// copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the
|
||||||
|
// Software is furnished to do so, subject to the following
|
||||||
|
// conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be
|
||||||
|
// included in all copies or substantial portions of the Software.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
// OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
namespace Newtonsoft.Json.Tests.TestObjects
|
||||||
|
{
|
||||||
|
public interface IPrivateImplementationA
|
||||||
|
{
|
||||||
|
string PropertyA { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
#region License
|
||||||
|
// Copyright (c) 2007 James Newton-King
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person
|
||||||
|
// obtaining a copy of this software and associated documentation
|
||||||
|
// files (the "Software"), to deal in the Software without
|
||||||
|
// restriction, including without limitation the rights to use,
|
||||||
|
// copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the
|
||||||
|
// Software is furnished to do so, subject to the following
|
||||||
|
// conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be
|
||||||
|
// included in all copies or substantial portions of the Software.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
// OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
namespace Newtonsoft.Json.Tests.TestObjects
|
||||||
|
{
|
||||||
|
public interface IPrivateImplementationB
|
||||||
|
{
|
||||||
|
string PropertyB { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
#region License
|
||||||
|
// Copyright (c) 2007 James Newton-King
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person
|
||||||
|
// obtaining a copy of this software and associated documentation
|
||||||
|
// files (the "Software"), to deal in the Software without
|
||||||
|
// restriction, including without limitation the rights to use,
|
||||||
|
// copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the
|
||||||
|
// Software is furnished to do so, subject to the following
|
||||||
|
// conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be
|
||||||
|
// included in all copies or substantial portions of the Software.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
// OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
namespace Newtonsoft.Json.Tests.TestObjects
|
||||||
|
{
|
||||||
|
public interface IPrivateOverriddenImplementation
|
||||||
|
{
|
||||||
|
object OverriddenProperty { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
#region License
|
||||||
|
// Copyright (c) 2007 James Newton-King
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person
|
||||||
|
// obtaining a copy of this software and associated documentation
|
||||||
|
// files (the "Software"), to deal in the Software without
|
||||||
|
// restriction, including without limitation the rights to use,
|
||||||
|
// copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the
|
||||||
|
// Software is furnished to do so, subject to the following
|
||||||
|
// conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be
|
||||||
|
// included in all copies or substantial portions of the Software.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
// OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
namespace Newtonsoft.Json.Tests.TestObjects
|
||||||
|
{
|
||||||
|
public class PrivateImplementationAClass : IPrivateImplementationA
|
||||||
|
{
|
||||||
|
[JsonIgnore]
|
||||||
|
public string PropertyA { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("PropertyA")]
|
||||||
|
string IPrivateImplementationA.PropertyA
|
||||||
|
{
|
||||||
|
get { return this.PropertyA; }
|
||||||
|
set { this.PropertyA = value; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
#region License
|
||||||
|
// Copyright (c) 2007 James Newton-King
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person
|
||||||
|
// obtaining a copy of this software and associated documentation
|
||||||
|
// files (the "Software"), to deal in the Software without
|
||||||
|
// restriction, including without limitation the rights to use,
|
||||||
|
// copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the
|
||||||
|
// Software is furnished to do so, subject to the following
|
||||||
|
// conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be
|
||||||
|
// included in all copies or substantial portions of the Software.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
// OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
namespace Newtonsoft.Json.Tests.TestObjects
|
||||||
|
{
|
||||||
|
public class PrivateImplementationBClass : PrivateImplementationAClass, IPrivateImplementationB, IPrivateOverriddenImplementation
|
||||||
|
{
|
||||||
|
[JsonIgnore]
|
||||||
|
public string PropertyB { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("PropertyB")]
|
||||||
|
string IPrivateImplementationB.PropertyB
|
||||||
|
{
|
||||||
|
get { return this.PropertyB; }
|
||||||
|
set { this.PropertyB = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonProperty("OverriddenProperty")]
|
||||||
|
private string OverriddenPropertyString
|
||||||
|
{
|
||||||
|
get { return this.OverriddenProperty.ToString(); }
|
||||||
|
set { this.OverriddenProperty = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public object OverriddenProperty { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
object IPrivateOverriddenImplementation.OverriddenProperty
|
||||||
|
{
|
||||||
|
get { return this.OverriddenProperty; }
|
||||||
|
set { this.OverriddenProperty = value; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -85,7 +85,7 @@ using System.Security;
|
|||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
[assembly: AssemblyVersion("4.0.7.0")]
|
[assembly: AssemblyVersion("4.0.7.0")]
|
||||||
#if !PocketPC
|
#if !PocketPC
|
||||||
[assembly: AssemblyFileVersion("4.0.7.14603")]
|
[assembly: AssemblyFileVersion("4.0.7.14610")]
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
[assembly: CLSCompliant(true)]
|
[assembly: CLSCompliant(true)]
|
||||||
|
|||||||
@@ -43,7 +43,8 @@ namespace Newtonsoft.Json.Serialization
|
|||||||
/// Initializes a new instance of the <see cref="JsonPropertyCollection"/> class.
|
/// Initializes a new instance of the <see cref="JsonPropertyCollection"/> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="type">The type.</param>
|
/// <param name="type">The type.</param>
|
||||||
public JsonPropertyCollection(Type type) : base(StringComparer.Ordinal)
|
public JsonPropertyCollection(Type type)
|
||||||
|
: base(StringComparer.Ordinal)
|
||||||
{
|
{
|
||||||
ValidationUtils.ArgumentNotNull(type, "type");
|
ValidationUtils.ArgumentNotNull(type, "type");
|
||||||
_type = type;
|
_type = type;
|
||||||
@@ -72,12 +73,13 @@ namespace Newtonsoft.Json.Serialization
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
JsonProperty existingProperty = this[property.PropertyName];
|
JsonProperty existingProperty = this[property.PropertyName];
|
||||||
|
bool duplicateProperty = true;
|
||||||
|
|
||||||
if (existingProperty.Ignored)
|
if (existingProperty.Ignored)
|
||||||
{
|
{
|
||||||
// remove ignored property so it can be replaced in collection
|
// remove ignored property so it can be replaced in collection
|
||||||
Remove(existingProperty);
|
Remove(existingProperty);
|
||||||
return;
|
duplicateProperty = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (property.DeclaringType != null && existingProperty.DeclaringType != null)
|
if (property.DeclaringType != null && existingProperty.DeclaringType != null)
|
||||||
@@ -86,7 +88,7 @@ namespace Newtonsoft.Json.Serialization
|
|||||||
{
|
{
|
||||||
// current property is on a derived class and hides the existing
|
// current property is on a derived class and hides the existing
|
||||||
Remove(existingProperty);
|
Remove(existingProperty);
|
||||||
return;
|
duplicateProperty = false;
|
||||||
}
|
}
|
||||||
if (existingProperty.DeclaringType.IsSubclassOf(property.DeclaringType))
|
if (existingProperty.DeclaringType.IsSubclassOf(property.DeclaringType))
|
||||||
{
|
{
|
||||||
@@ -95,8 +97,8 @@ namespace Newtonsoft.Json.Serialization
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new JsonSerializationException(
|
if (duplicateProperty)
|
||||||
"A member with the name '{0}' already exists on '{1}'. Use the JsonPropertyAttribute to specify another name.".FormatWith(CultureInfo.InvariantCulture, property.PropertyName, _type));
|
throw new JsonSerializationException("A member with the name '{0}' already exists on '{1}'. Use the JsonPropertyAttribute to specify another name.".FormatWith(CultureInfo.InvariantCulture, property.PropertyName, _type));
|
||||||
}
|
}
|
||||||
|
|
||||||
Add(property);
|
Add(property);
|
||||||
|
|||||||
Reference in New Issue
Block a user