public override IExpression Rewrite(ICreateDelegateInstance createDelegate) { var newDel = new CreateDelegateInstance(createDelegate); newDel.MethodToCallViaDelegate = CurrentMethod.ContainingTypeDefinition.Methods .First(m => m.ToString() == MutationTarget.PassInfo); return(newDel); }
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)); }