public static DynamicExpression GetMember(ActionBinder binder, string name, GetMemberBindingFlags getMemberFlags, Type result, params Expression[] arguments) { ContractUtils.RequiresNotNull(arguments, "arguments"); ContractUtils.Requires(arguments.Length > 0, "arguments"); return(Expression.Dynamic(OldGetMemberAction.Make(binder, name, getMemberFlags), result, arguments)); }
public PythonBinder(ScriptDomainManager manager, PythonContext/*!*/ pythonContext, CodeContext context) : base(manager) { ContractUtils.RequiresNotNull(pythonContext, "pythonContext"); _context = pythonContext; if (context != null) { context.LanguageContext.DomainManager.AssemblyLoaded += new EventHandler<AssemblyLoadedEventArgs>(DomainManager_AssemblyLoaded); foreach (Assembly asm in pythonContext.DomainManager.GetLoadedAssemblyList()) { DomainManager_AssemblyLoaded(this, new AssemblyLoadedEventArgs(asm)); } } EmptyGetMemberAction = OldGetMemberAction.Make(this, String.Empty); }
public GetMemberBinderHelper(CodeContext context, OldGetMemberAction action, object[] args) : base(context, action, args) { throw new NotImplementedException(); }
private bool MakeGetMemberRule(OldGetMemberAction action, CodeContext context, RuleBuilder rule) { object value; if (TryGetValue(action.Name, out value)) { Debug.Assert(value is MemberTracker); MemberTracker memValue = (MemberTracker)value; rule.MakeTest(typeof(NamespaceTracker)); rule.AddTest( Expression.Equal( Expression.Property( Expression.Convert(rule.Parameters[0], typeof(NamespaceTracker)), typeof(NamespaceTracker).GetProperty("Id") ), AstUtils.Constant(Id) ) ); Expression target = context.LanguageContext.Binder.ReturnMemberTracker(memValue.DeclaringType, memValue); rule.Target = rule.MakeReturn(context.LanguageContext.Binder, target); return true; } return false; }