public override IExpression Rewrite(ICreateDelegateInstance createDelegate)
            {
                var newDel = new CreateDelegateInstance(createDelegate);

                newDel.MethodToCallViaDelegate =
                    CurrentMethod.ContainingTypeDefinition.Methods
                    .First(m => m.ToString() == MutationTarget.PassInfo);
                return(newDel);
            }
Exemplo n.º 2
0
        public override IExpression Rewrite(ICreateObjectInstance createObjectInstance)
        {
            var mutableCreateObjectInstance = createObjectInstance as CreateObjectInstance;

            if (mutableCreateObjectInstance != null && mutableCreateObjectInstance.Arguments.Count == 2)
            {
                AddressOf /*?*/ aexpr = mutableCreateObjectInstance.Arguments[1] as AddressOf;
                if (aexpr != null && aexpr.Expression.Definition is IMethodReference)
                {
                    CreateDelegateInstance createDel = new CreateDelegateInstance();
                    createDel.Instance                = mutableCreateObjectInstance.Arguments[0];
                    createDel.IsVirtualDelegate       = aexpr.Expression.Instance != null;
                    createDel.MethodToCallViaDelegate = (IMethodReference)aexpr.Expression.Definition;
                    createDel.Locations               = mutableCreateObjectInstance.Locations;
                    createDel.Type = createObjectInstance.Type;
                    return(this.Rewrite(createDel));
                }
            }
            return(base.Rewrite(createObjectInstance));
        }