protected void AssertBinder(Binder binder, IResolveConstraint resolveConstraint) { InvokeMemberBinder memberBinder = binder.GetMemberBinder(); IDynamicBinder dynamicBinder = Strategy.GetBinder(memberBinder, binder.Args); Assert.That(dynamicBinder, resolveConstraint); }
protected void AssertMemberBinder(string method, int argCount, string[] argNames, object[] args) { InvokeMemberBinder memberBinder = Binder.GetMemberBinder("Find", 1, "Id"); IDynamicBinder dynamicBinder = Strategy.GetBinder(memberBinder, new object[] { 100 }); Assert.That(dynamicBinder, Is.Not.Null); }
/// <summary> /// Try to Invoke a dynamic method /// </summary> /// <param name="binder"></param> /// <param name="args"></param> /// <param name="result"></param> /// <returns></returns> public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result) { List <IMemberStrategy> strategies = GetStrategies(this); foreach (var strategy in strategies) { IDynamicBinder dynamicBinder = strategy.GetBinder(binder, args); if (dynamicBinder != null) { result = dynamicBinder.Invoke(this, binder, args); return(true); } } result = null; return(false); }
public DynamicExpressionStatement(IDynamicBinder binder, Arguments args, Location loc) { this.binder = binder; this.arguments = args; this.loc = loc; }