public static bool TryBindGetMember(GetMemberBinder binder, DynamicMetaObject instance, out DynamicMetaObject result, bool delayInvocation) { ContractUtils.RequiresNotNull(binder, "binder"); ContractUtils.RequiresNotNull(instance, "instance"); if (TryGetMetaObject(ref instance)) { // // Demand Full Trust to proceed with the binding. // new PermissionSet(PermissionState.Unrestricted).Demand(); var comGetMember = new ComGetMemberBinder(binder, delayInvocation); result = instance.BindGetMember(comGetMember); if (result.Expression.Type.IsValueType) { result = new DynamicMetaObject( Expression.Convert(result.Expression, typeof(object)), result.Restrictions ); } return true; } else { result = null; return false; } }
/// <summary> /// Performs the binding of the dynamic get member operation. /// </summary> /// <param name="target">The target of the dynamic get member operation.</param> /// <param name="args">An array of arguments of the dynamic get member operation.</param> /// <returns>The <see cref="DynamicMetaObject"/> representing the result of the binding.</returns> public sealed override DynamicMetaObject Bind(DynamicMetaObject target, params DynamicMetaObject[] args) { ContractUtils.RequiresNotNull(target, "target"); ContractUtils.Requires(args == null || args.Length == 0, "args"); return(target.BindGetMember(this)); }
/// <summary> /// Performs the binding of the dynamic get member operation. /// </summary> /// <param name="target">The target of the dynamic get member operation.</param> /// <param name="args">An array of arguments of the dynamic get member operation.</param> /// <returns>The <see cref="DynamicMetaObject"/> representing the result of the binding.</returns> public sealed override DynamicMetaObject Bind(DynamicMetaObject target, params DynamicMetaObject[]?args) { ArgumentNullException.ThrowIfNull(target); ContractUtils.Requires(args == null || args.Length == 0, nameof(args)); return(target.BindGetMember(this)); }
/// <summary> /// Performs the binding of the dynamic get member operation. /// </summary> /// <param name="target">The target of the dynamic get member operation.</param> /// <param name="args">An array of arguments of the dynamic get member operation.</param> /// <returns>The <see cref="DynamicMetaObject"/> representing the result of the binding.</returns> public sealed override DynamicMetaObject Bind(DynamicMetaObject target, params DynamicMetaObject[] args) { ContractUtils.RequiresNotNull(target, nameof(target)); ContractUtils.Requires(args == null || args.Length == 0, nameof(args)); return target.BindGetMember(this); }
/// <summary> /// Tries to perform binding of the dynamic get member operation. /// </summary> /// <param name="binder">An instance of the <see cref="GetMemberBinder"/> that represents the details of the dynamic operation.</param> /// <param name="instance">The target of the dynamic operation. </param> /// <param name="result">The new <see cref="DynamicMetaObject"/> representing the result of the binding.</param> /// <returns>true if operation was bound successfully; otherwise, false.</returns> public static bool TryBindGetMember(GetMemberBinder binder, DynamicMetaObject instance, out DynamicMetaObject result) { if (TryGetMetaObject(ref instance)) { result = instance.BindGetMember(binder); return true; } else { result = null; return false; } }
/// <summary> /// Tries to perform binding of the dynamic get member operation. /// </summary> /// <param name="binder">An instance of the <see cref="GetMemberBinder"/> that represents the details of the dynamic operation.</param> /// <param name="instance">The target of the dynamic operation. </param> /// <param name="result">The new <see cref="DynamicMetaObject"/> representing the result of the binding.</param> /// <param name="delayInvocation">true if member evaluation may be delayed.</param> /// <returns>true if operation was bound successfully; otherwise, false.</returns> public static bool TryBindGetMember(GetMemberBinder binder, DynamicMetaObject instance, out DynamicMetaObject result, bool delayInvocation) { if (TryGetMetaObject(ref instance)) { var comGetMember = new ComGetMemberBinder(binder, delayInvocation); result = instance.BindGetMember(comGetMember); return true; } else { result = null; return false; } }
/// <summary> /// Tries to perform binding of the dynamic get member operation. /// </summary> /// <param name="binder">An instance of the <see cref="GetMemberBinder"/> that represents the details of the dynamic operation.</param> /// <param name="instance">The target of the dynamic operation. </param> /// <param name="result">The new <see cref="DynamicMetaObject"/> representing the result of the binding.</param> /// <param name="delayInvocation">true if member evaluation may be delayed.</param> /// <returns>true if operation was bound successfully; otherwise, false.</returns> public static bool TryBindGetMember(GetMemberBinder binder, DynamicMetaObject instance, out DynamicMetaObject result, bool delayInvocation) { ContractUtils.RequiresNotNull(binder, "binder"); ContractUtils.RequiresNotNull(instance, "instance"); if (TryGetMetaObject(ref instance)) { var comGetMember = new ComGetMemberBinder(binder, delayInvocation); result = instance.BindGetMember(comGetMember); if (result.Expression.Type.IsValueType) { result = new DynamicMetaObject( Expression.Convert(result.Expression, typeof(object)), result.Restrictions ); } return true; } else { result = null; return false; } }
public static void TestMetaObject(DynamicMetaObject target, string name, bool isValid = true) { string expectedMethodSignature = "System.Json.JsonValue GetValue(System.String)"; GetMemberBinder binder = new TestGetMemberBinder(name); DynamicMetaObject result = target.BindGetMember(binder); Assert.IsNotNull(result); MethodCallExpression expression = result.Expression as MethodCallExpression; Assert.IsNotNull(expression); Assert.AreEqual<string>(expectedMethodSignature, expression.Method.ToString()); }
public static void TestBindParams(DynamicMetaObject target) { GetMemberBinder binder = new TestGetMemberBinder("AnyProperty"); ExceptionTestHelper.ExpectException<ArgumentNullException>(() => { var result = target.BindGetMember(null); }); }
public sealed override DynamicMetaObject Bind(DynamicMetaObject target, DynamicMetaObject[] args) { ContractUtils.RequiresNotNull(target, "target"); ContractUtils.Requires((args == null) || (args.Length == 0), "args"); return target.BindGetMember(this); }