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

NoThrowGetBinderMember

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