diff --git a/Src/Newtonsoft.Json.Portable40.sln b/Src/Newtonsoft.Json.Portable40.sln deleted file mode 100644 index 0529cddc..00000000 --- a/Src/Newtonsoft.Json.Portable40.sln +++ /dev/null @@ -1,28 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.23107.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Portable40", "Newtonsoft.Json\Newtonsoft.Json.Portable40.csproj", "{959F7F85-C98B-4876-971A-9036224578E4}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Tests.Portable40", "Newtonsoft.Json.Tests\Newtonsoft.Json.Tests.Portable40.csproj", "{3E6E2335-B079-4B5B-A65A-9D586914BCBB}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {959F7F85-C98B-4876-971A-9036224578E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {959F7F85-C98B-4876-971A-9036224578E4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {959F7F85-C98B-4876-971A-9036224578E4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {959F7F85-C98B-4876-971A-9036224578E4}.Release|Any CPU.Build.0 = Release|Any CPU - {3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/Src/Newtonsoft.Json.Tests/Converters/StringEnumConverterTests.cs b/Src/Newtonsoft.Json.Tests/Converters/StringEnumConverterTests.cs index cb31488f..404bcbd5 100644 --- a/Src/Newtonsoft.Json.Tests/Converters/StringEnumConverterTests.cs +++ b/Src/Newtonsoft.Json.Tests/Converters/StringEnumConverterTests.cs @@ -612,12 +612,21 @@ namespace Newtonsoft.Json.Tests.Converters { JsonSerializationException ex = ExceptionAssert.Throws(() => { - JsonConvert.DeserializeObject("\"1\"", new StringEnumConverter {AllowIntegerValues = false}); + JsonConvert.DeserializeObject("\"1\"", new StringEnumConverter { AllowIntegerValues = false }); }); Assert.AreEqual("Integer string '1' is not allowed.", ex.InnerException.Message); } + [Test] + public void AllowIntegerValueAndNonNamedValue() + { + ExceptionAssert.Throws(() => + { + JsonConvert.SerializeObject((StoreColor)999, new StringEnumConverter { AllowIntegerValues = false }); + }, "Integer value 999 is not allowed. Path ''."); + } + public enum EnumWithDifferentCases { M, diff --git a/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs b/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs index 3a804bda..86c29532 100644 --- a/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs +++ b/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs @@ -1052,7 +1052,7 @@ namespace Newtonsoft.Json.Tests.Converters [Test] public void NoRootObject() { - ExceptionAssert.Throws(() => { XmlDocument newDoc = (XmlDocument)JsonConvert.DeserializeXmlNode(@"[1]"); }, "XmlNodeConverter can only convert JSON that begins with an object."); + ExceptionAssert.Throws(() => { XmlDocument newDoc = (XmlDocument)JsonConvert.DeserializeXmlNode(@"[1]"); }, "XmlNodeConverter can only convert JSON that begins with an object. Path '', line 1, position 1."); } [Test] diff --git a/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Portable40.csproj b/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Portable40.csproj deleted file mode 100644 index 0814efab..00000000 --- a/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Portable40.csproj +++ /dev/null @@ -1,431 +0,0 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {3E6E2335-B079-4B5B-A65A-9D586914BCBB} - Library - Properties - Newtonsoft.Json.Tests - Newtonsoft.Json.Tests - - - - - - - - - - - 3.5 - - - v4.0 - false - - - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - - - true - full - false - bin\Debug\Portable40\ - obj\Debug\Portable40\ - TRACE;DEBUG;PORTABLE40 - prompt - 4 - AllRules.ruleset - false - - - pdbonly - true - bin\Release\Portable40\ - obj\Release\Portable40\ - TRACE;PORTABLE40 - prompt - 4 - AllRules.ruleset - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - True - True - FileSystemEntityModel.edmx - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - EntityModelCodeGenerator - FileSystemEntityModel.Designer.cs - - - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Windows Installer 3.1 - true - - - - - {959f7f85-c98b-4876-971a-9036224578e4} - Newtonsoft.Json.Portable40 - - - - - PreserveNewest - - - - - PreserveNewest - - - - - - - - \ No newline at end of file diff --git a/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Portable40.project.json b/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Portable40.project.json deleted file mode 100644 index c46b1171..00000000 --- a/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Portable40.project.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "dependencies": { - "FSharp.Core": "4.0.0.1", - "NUnit": "2.6.2" - }, - "frameworks": { - "net40": {} - }, - "runtimes": { - "win": {} - } -} \ No newline at end of file diff --git a/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Roslyn.csproj b/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Roslyn.csproj index b724a2ee..a92fb3b1 100644 --- a/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Roslyn.csproj +++ b/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Roslyn.csproj @@ -18,6 +18,7 @@ Full + PreserveNewest diff --git a/Src/Newtonsoft.Json/Converters/StringEnumConverter.cs b/Src/Newtonsoft.Json/Converters/StringEnumConverter.cs index cbfc8809..cebac9db 100644 --- a/Src/Newtonsoft.Json/Converters/StringEnumConverter.cs +++ b/Src/Newtonsoft.Json/Converters/StringEnumConverter.cs @@ -95,6 +95,11 @@ namespace Newtonsoft.Json.Converters if (char.IsNumber(enumName[0]) || enumName[0] == '-') { + if (!AllowIntegerValues) + { + throw JsonSerializationException.Create(null, writer.ContainerPath, "Integer value {0} is not allowed.".FormatWith(CultureInfo.InvariantCulture, enumName), null); + } + // enum value has no name so write number writer.WriteValue(value); } diff --git a/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs b/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs index 68593000..5fa6bd9a 100644 --- a/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs +++ b/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs @@ -1617,7 +1617,7 @@ namespace Newtonsoft.Json.Converters case JsonToken.StartObject: break; default: - throw new JsonSerializationException("XmlNodeConverter can only convert JSON that begins with an object."); + throw JsonSerializationException.Create(reader, "XmlNodeConverter can only convert JSON that begins with an object."); } XmlNamespaceManager manager = new XmlNamespaceManager(new NameTable()); @@ -1629,7 +1629,7 @@ namespace Newtonsoft.Json.Converters { if (objectType != typeof(XDocument) && objectType != typeof(XElement)) { - throw new JsonSerializationException("XmlNodeConverter only supports deserializing XDocument or XElement."); + throw JsonSerializationException.Create(reader, "XmlNodeConverter only supports deserializing XDocument or XElement."); } XDocument d = new XDocument(); @@ -1642,7 +1642,7 @@ namespace Newtonsoft.Json.Converters { if (objectType != typeof(XmlDocument)) { - throw new JsonSerializationException("XmlNodeConverter only supports deserializing XmlDocuments"); + throw JsonSerializationException.Create(reader, "XmlNodeConverter only supports deserializing XmlDocuments"); } XmlDocument d = new XmlDocument(); @@ -1656,9 +1656,9 @@ namespace Newtonsoft.Json.Converters } #endif - if (document == null || rootNode == null) + if (document == null || rootNode == null) { - throw new JsonSerializationException("Unexpected type when converting XML: " + objectType); + throw JsonSerializationException.Create(reader, "Unexpected type when converting XML: " + objectType); } if (!string.IsNullOrEmpty(DeserializeRootElementName)) diff --git a/Src/Newtonsoft.Json/Linq/JValue.Async.cs b/Src/Newtonsoft.Json/Linq/JValue.Async.cs index 06b05a7e..b4bb5366 100644 --- a/Src/Newtonsoft.Json/Linq/JValue.Async.cs +++ b/Src/Newtonsoft.Json/Linq/JValue.Async.cs @@ -130,7 +130,7 @@ namespace Newtonsoft.Json.Linq return writer.WriteValueAsync((Uri)_value, cancellationToken); } - throw MiscellaneousUtils.CreateArgumentOutOfRangeException("TokenType", _valueType, "Unexpected token type."); + throw MiscellaneousUtils.CreateArgumentOutOfRangeException(nameof(Type), _valueType, "Unexpected token type."); } } } diff --git a/Src/Newtonsoft.Json/Newtonsoft.Json.Portable40.csproj b/Src/Newtonsoft.Json/Newtonsoft.Json.Portable40.csproj deleted file mode 100644 index bcc087e1..00000000 --- a/Src/Newtonsoft.Json/Newtonsoft.Json.Portable40.csproj +++ /dev/null @@ -1,270 +0,0 @@ - - - - Debug - AnyCPU - {959F7F85-C98B-4876-971A-9036224578E4} - Library - Properties - Newtonsoft.Json - Newtonsoft.Json - v4.0 - Profile328 - 512 - {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - 10.0 - - - - - 4.0 - PORTABLE40;HAVE_CHAR_TO_LOWER_WITH_CULTURE;HAVE_DATA_CONTRACTS;HAVE_DATE_TIME_OFFSET;HAVE_DB_NULL_TYPE_CODE;HAVE_FSHARP_TYPES;HAVE_FULL_REFLECTION;HAVE_GUID_TRY_PARSE;HAVE_ICONVERTIBLE;HAVE_IGNORE_DATA_MEMBER_ATTRIBUTE;HAVE_IMMUTABLE_COLLECTIONS;HAVE_ISET;HAVE_LINQ;HAVE_MEMORY_BARRIER;HAVE_SECURITY_SAFE_CRITICAL_ATTRIBUTE;HAVE_SERIALIZATION_BINDER_BIND_TO_NAME;HAVE_STRING_JOIN_WITH_ENUMERABLE;HAVE_TIME_SPAN_PARSE_WITH_CULTURE;HAVE_TIME_SPAN_TO_STRING_WITH_CULTURE;HAVE_TIME_ZONE_INFO;HAVE_VARIANT_TYPE_PARAMETERS;HAVE_VERSION_TRY_PARSE - - - true - full - false - bin\Debug\Portable40\ - obj\Debug\Portable40\ - TRACE;DEBUG;CODE_ANALYSIS;$(DefineConstants);$(AdditionalConstants) - prompt - 4 - true - Newtonsoft.Json.ruleset - - - pdbonly - true - bin\Release\Portable40\ - obj\Release\Portable40\ - TRACE;CODE_ANALYSIS;$(DefineConstants);$(AdditionalConstants) - prompt - 4 - bin\Release\Portable40\Newtonsoft.Json.xml - true - Newtonsoft.Json.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Src/Newtonsoft.Json/Newtonsoft.Json.Portable40.project.json b/Src/Newtonsoft.Json/Newtonsoft.Json.Portable40.project.json deleted file mode 100644 index c78108a4..00000000 --- a/Src/Newtonsoft.Json/Newtonsoft.Json.Portable40.project.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "frameworks": { - ".NETPortable,Version=v4.0,Profile=Profile328": {} - }, - "runtimes": { - "win": {} - } -} \ No newline at end of file diff --git a/Src/Newtonsoft.Json/Newtonsoft.Json.Roslyn.csproj b/Src/Newtonsoft.Json/Newtonsoft.Json.Roslyn.csproj index 22a8387a..cd2c5963 100644 --- a/Src/Newtonsoft.Json/Newtonsoft.Json.Roslyn.csproj +++ b/Src/Newtonsoft.Json/Newtonsoft.Json.Roslyn.csproj @@ -2,7 +2,6 @@ net45;net40;net35;net20;netstandard1.0;netstandard1.3;portable-net45+win8+wpa81+wp8 netstandard1.0;netstandard1.3 - 10.0.1 beta1 James Newton-King diff --git a/Src/Newtonsoft.Json/Serialization/FormatterConverter.cs b/Src/Newtonsoft.Json/Serialization/FormatterConverter.cs index 06cd2079..3247d254 100644 --- a/Src/Newtonsoft.Json/Serialization/FormatterConverter.cs +++ b/Src/Newtonsoft.Json/Serialization/FormatterConverter.cs @@ -2,6 +2,7 @@ using System.Globalization; using System.Runtime.InteropServices; using System.Runtime.Serialization; +using Newtonsoft.Json.Utilities; #if HAVE_BINARY_SERIALIZATION && !HAVE_BINARY_FORMATTER @@ -11,154 +12,103 @@ namespace Newtonsoft.Json.Serialization { public object Convert(object value, Type type) { - if (value == null) - { - throw new ArgumentNullException("value"); - } + ValidationUtils.ArgumentNotNull(value, nameof(value)); return System.Convert.ChangeType(value, type, CultureInfo.InvariantCulture); } public object Convert(object value, TypeCode typeCode) { - if (value == null) - { - throw new ArgumentNullException("value"); - } + ValidationUtils.ArgumentNotNull(value, nameof(value)); return System.Convert.ChangeType(value, typeCode, CultureInfo.InvariantCulture); } public bool ToBoolean(object value) { - if (value == null) - { - throw new ArgumentNullException("value"); - } + ValidationUtils.ArgumentNotNull(value, nameof(value)); return System.Convert.ToBoolean(value, CultureInfo.InvariantCulture); } public byte ToByte(object value) { - if (value == null) - { - throw new ArgumentNullException("value"); - } + ValidationUtils.ArgumentNotNull(value, nameof(value)); return System.Convert.ToByte(value, CultureInfo.InvariantCulture); } public char ToChar(object value) { - if (value == null) - { - throw new ArgumentNullException("value"); - } + ValidationUtils.ArgumentNotNull(value, nameof(value)); return System.Convert.ToChar(value, CultureInfo.InvariantCulture); } public DateTime ToDateTime(object value) { - if (value == null) - { - throw new ArgumentNullException("value"); - } + ValidationUtils.ArgumentNotNull(value, nameof(value)); return System.Convert.ToDateTime(value, CultureInfo.InvariantCulture); } public decimal ToDecimal(object value) { - if (value == null) - { - throw new ArgumentNullException("value"); - } + ValidationUtils.ArgumentNotNull(value, nameof(value)); return System.Convert.ToDecimal(value, CultureInfo.InvariantCulture); } public double ToDouble(object value) { - if (value == null) - { - throw new ArgumentNullException("value"); - } + ValidationUtils.ArgumentNotNull(value, nameof(value)); return System.Convert.ToDouble(value, CultureInfo.InvariantCulture); } public short ToInt16(object value) { - if (value == null) - { - throw new ArgumentNullException("value"); - } + ValidationUtils.ArgumentNotNull(value, nameof(value)); return System.Convert.ToInt16(value, CultureInfo.InvariantCulture); } public int ToInt32(object value) { - if (value == null) - { - throw new ArgumentNullException("value"); - } + ValidationUtils.ArgumentNotNull(value, nameof(value)); return System.Convert.ToInt32(value, CultureInfo.InvariantCulture); } public long ToInt64(object value) { - if (value == null) - { - throw new ArgumentNullException("value"); - } + ValidationUtils.ArgumentNotNull(value, nameof(value)); return System.Convert.ToInt64(value, CultureInfo.InvariantCulture); } public sbyte ToSByte(object value) { - if (value == null) - { - throw new ArgumentNullException("value"); - } + ValidationUtils.ArgumentNotNull(value, nameof(value)); return System.Convert.ToSByte(value, CultureInfo.InvariantCulture); } public float ToSingle(object value) { - if (value == null) - { - throw new ArgumentNullException("value"); - } + ValidationUtils.ArgumentNotNull(value, nameof(value)); return System.Convert.ToSingle(value, CultureInfo.InvariantCulture); } public string ToString(object value) { - if (value == null) - { - throw new ArgumentNullException("value"); - } + ValidationUtils.ArgumentNotNull(value, nameof(value)); return System.Convert.ToString(value, CultureInfo.InvariantCulture); } public ushort ToUInt16(object value) { - if (value == null) - { - throw new ArgumentNullException("value"); - } + ValidationUtils.ArgumentNotNull(value, nameof(value)); return System.Convert.ToUInt16(value, CultureInfo.InvariantCulture); } public uint ToUInt32(object value) { - if (value == null) - { - throw new ArgumentNullException("value"); - } + ValidationUtils.ArgumentNotNull(value, nameof(value)); return System.Convert.ToUInt32(value, CultureInfo.InvariantCulture); } public ulong ToUInt64(object value) { - if (value == null) - { - throw new ArgumentNullException("value"); - } + ValidationUtils.ArgumentNotNull(value, nameof(value)); return System.Convert.ToUInt64(value, CultureInfo.InvariantCulture); } } diff --git a/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalWriter.cs b/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalWriter.cs index 9192cb2b..da224c4c 100644 --- a/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalWriter.cs +++ b/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalWriter.cs @@ -1139,7 +1139,7 @@ namespace Newtonsoft.Json.Serialization } #if HAVE_DATE_TIME_OFFSET case PrimitiveTypeCode.DateTimeOffset: - case PrimitiveTypeCode.DateTimeOffsetNullable: + case PrimitiveTypeCode.DateTimeOffsetNullable: { escape = false; StringWriter sw = new StringWriter(CultureInfo.InvariantCulture); diff --git a/Src/Newtonsoft.Json/Utilities/DynamicProxyMetaObject.cs b/Src/Newtonsoft.Json/Utilities/DynamicProxyMetaObject.cs index 72924719..05e7e214 100644 --- a/Src/Newtonsoft.Json/Utilities/DynamicProxyMetaObject.cs +++ b/Src/Newtonsoft.Json/Utilities/DynamicProxyMetaObject.cs @@ -49,35 +49,35 @@ namespace Newtonsoft.Json.Utilities public override DynamicMetaObject BindGetMember(GetMemberBinder binder) { - return IsOverridden("TryGetMember") - ? CallMethodWithResult("TryGetMember", binder, NoArgs, e => binder.FallbackGetMember(this, e)) + return IsOverridden(nameof(DynamicProxy.TryGetMember)) + ? CallMethodWithResult(nameof(DynamicProxy.TryGetMember), binder, NoArgs, e => binder.FallbackGetMember(this, e)) : base.BindGetMember(binder); } public override DynamicMetaObject BindSetMember(SetMemberBinder binder, DynamicMetaObject value) { - return IsOverridden("TrySetMember") - ? CallMethodReturnLast("TrySetMember", binder, GetArgs(value), e => binder.FallbackSetMember(this, value, e)) + return IsOverridden(nameof(DynamicProxy.TrySetMember)) + ? CallMethodReturnLast(nameof(DynamicProxy.TrySetMember), binder, GetArgs(value), e => binder.FallbackSetMember(this, value, e)) : base.BindSetMember(binder, value); } public override DynamicMetaObject BindDeleteMember(DeleteMemberBinder binder) { - return IsOverridden("TryDeleteMember") - ? CallMethodNoResult("TryDeleteMember", binder, NoArgs, e => binder.FallbackDeleteMember(this, e)) + return IsOverridden(nameof(DynamicProxy.TryDeleteMember)) + ? CallMethodNoResult(nameof(DynamicProxy.TryDeleteMember), binder, NoArgs, e => binder.FallbackDeleteMember(this, e)) : base.BindDeleteMember(binder); } public override DynamicMetaObject BindConvert(ConvertBinder binder) { - return IsOverridden("TryConvert") - ? CallMethodWithResult("TryConvert", binder, NoArgs, e => binder.FallbackConvert(this, e)) + return IsOverridden(nameof(DynamicProxy.TryConvert)) + ? CallMethodWithResult(nameof(DynamicProxy.TryConvert), binder, NoArgs, e => binder.FallbackConvert(this, e)) : base.BindConvert(binder); } public override DynamicMetaObject BindInvokeMember(InvokeMemberBinder binder, DynamicMetaObject[] args) { - if (!IsOverridden("TryInvokeMember")) + if (!IsOverridden(nameof(DynamicProxy.TryInvokeMember))) { return base.BindInvokeMember(binder, args); } @@ -101,11 +101,11 @@ namespace Newtonsoft.Json.Utilities Fallback fallback = e => binder.FallbackInvokeMember(this, args, e); return BuildCallMethodWithResult( - "TryInvokeMember", + nameof(DynamicProxy.TryInvokeMember), binder, GetArgArray(args), BuildCallMethodWithResult( - "TryGetMember", + nameof(DynamicProxy.TryGetMember), new GetBinderAdapter(binder), NoArgs, fallback(null), @@ -117,50 +117,50 @@ namespace Newtonsoft.Json.Utilities public override DynamicMetaObject BindCreateInstance(CreateInstanceBinder binder, DynamicMetaObject[] args) { - return IsOverridden("TryCreateInstance") - ? CallMethodWithResult("TryCreateInstance", binder, GetArgArray(args), e => binder.FallbackCreateInstance(this, args, e)) + return IsOverridden(nameof(DynamicProxy.TryCreateInstance)) + ? CallMethodWithResult(nameof(DynamicProxy.TryCreateInstance), binder, GetArgArray(args), e => binder.FallbackCreateInstance(this, args, e)) : base.BindCreateInstance(binder, args); } public override DynamicMetaObject BindInvoke(InvokeBinder binder, DynamicMetaObject[] args) { - return IsOverridden("TryInvoke") - ? CallMethodWithResult("TryInvoke", binder, GetArgArray(args), e => binder.FallbackInvoke(this, args, e)) + return IsOverridden(nameof(DynamicProxy.TryInvoke)) + ? CallMethodWithResult(nameof(DynamicProxy.TryInvoke), binder, GetArgArray(args), e => binder.FallbackInvoke(this, args, e)) : base.BindInvoke(binder, args); } public override DynamicMetaObject BindBinaryOperation(BinaryOperationBinder binder, DynamicMetaObject arg) { - return IsOverridden("TryBinaryOperation") - ? CallMethodWithResult("TryBinaryOperation", binder, GetArgs(arg), e => binder.FallbackBinaryOperation(this, arg, e)) + return IsOverridden(nameof(DynamicProxy.TryBinaryOperation)) + ? CallMethodWithResult(nameof(DynamicProxy.TryBinaryOperation), binder, GetArgs(arg), e => binder.FallbackBinaryOperation(this, arg, e)) : base.BindBinaryOperation(binder, arg); } public override DynamicMetaObject BindUnaryOperation(UnaryOperationBinder binder) { - return IsOverridden("TryUnaryOperation") - ? CallMethodWithResult("TryUnaryOperation", binder, NoArgs, e => binder.FallbackUnaryOperation(this, e)) + return IsOverridden(nameof(DynamicProxy.TryUnaryOperation)) + ? CallMethodWithResult(nameof(DynamicProxy.TryUnaryOperation), binder, NoArgs, e => binder.FallbackUnaryOperation(this, e)) : base.BindUnaryOperation(binder); } public override DynamicMetaObject BindGetIndex(GetIndexBinder binder, DynamicMetaObject[] indexes) { - return IsOverridden("TryGetIndex") - ? CallMethodWithResult("TryGetIndex", binder, GetArgArray(indexes), e => binder.FallbackGetIndex(this, indexes, e)) + return IsOverridden(nameof(DynamicProxy.TryGetIndex)) + ? CallMethodWithResult(nameof(DynamicProxy.TryGetIndex), binder, GetArgArray(indexes), e => binder.FallbackGetIndex(this, indexes, e)) : base.BindGetIndex(binder, indexes); } public override DynamicMetaObject BindSetIndex(SetIndexBinder binder, DynamicMetaObject[] indexes, DynamicMetaObject value) { - return IsOverridden("TrySetIndex") - ? CallMethodReturnLast("TrySetIndex", binder, GetArgArray(indexes, value), e => binder.FallbackSetIndex(this, indexes, value, e)) + return IsOverridden(nameof(DynamicProxy.TrySetIndex)) + ? CallMethodReturnLast(nameof(DynamicProxy.TrySetIndex), binder, GetArgArray(indexes, value), e => binder.FallbackSetIndex(this, indexes, value, e)) : base.BindSetIndex(binder, indexes, value); } public override DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes) { - return IsOverridden("TryDeleteIndex") - ? CallMethodNoResult("TryDeleteIndex", binder, GetArgArray(indexes), e => binder.FallbackDeleteIndex(this, indexes, e)) + return IsOverridden(nameof(DynamicProxy.TryDeleteIndex)) + ? CallMethodNoResult(nameof(DynamicProxy.TryDeleteIndex), binder, GetArgArray(indexes), e => binder.FallbackDeleteIndex(this, indexes, e)) : base.BindDeleteIndex(binder, indexes); } diff --git a/Src/Newtonsoft.Json/Utilities/MethodBinder.cs b/Src/Newtonsoft.Json/Utilities/MethodBinder.cs index 673ab179..17d5c627 100644 --- a/Src/Newtonsoft.Json/Utilities/MethodBinder.cs +++ b/Src/Newtonsoft.Json/Utilities/MethodBinder.cs @@ -1,12 +1,40 @@ -namespace Newtonsoft.Json.Utilities +#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; +#if !HAVE_LINQ +using Newtonsoft.Json.Utilities.LinqBridge; +#else +using System.Linq; +#endif +using System.Reflection; + +namespace Newtonsoft.Json.Utilities { #if PORTABLE - - using System; - using System.Collections.Generic; - using System.Linq; - using System.Reflection; - internal static class MethodBinder { @@ -314,6 +342,5 @@ } } - #endif -} +} \ No newline at end of file