<PackageReference Include="Newtonsoft.Json" Version="6.0.6" />

NoThrowSetBinderMember

using System.Dynamic; using System.Linq.Expressions; namespace Newtonsoft.Json.Utilities { internal class NoThrowSetBinderMember : SetMemberBinder { private readonly SetMemberBinder _innerBinder; public NoThrowSetBinderMember(SetMemberBinder innerBinder) : base(innerBinder.Name, innerBinder.IgnoreCase) { _innerBinder = innerBinder; } public override DynamicMetaObject FallbackSetMember(DynamicMetaObject target, DynamicMetaObject value, DynamicMetaObject errorSuggestion) { DynamicMetaObject dynamicMetaObject = _innerBinder.Bind(target, new DynamicMetaObject[1] { value }); NoThrowExpressionVisitor noThrowExpressionVisitor = new NoThrowExpressionVisitor(); Expression expression = noThrowExpressionVisitor.Visit(dynamicMetaObject.Expression); return new DynamicMetaObject(expression, dynamicMetaObject.Restrictions); } } }