public override Expression <TDelegate> ToLambda() { DynamicProxy proxy = GetDynamicProxy(); ConstructorDeclaration constructor = null; IEnumerable <Parameter> outParameters = null; var typeResolver = DummyArgumentsResolver.Instance; IEnumerable <ParameterExpression> parameters = null; var visitor = new GenericTypesTransformerVisitor(); NRefactory.ConstructorDeclaration constructorDeclaration = null; MethodDefinition methodDefinition = _ctor.ResolveConstructorDefinition(); var lambdaExpressionVisitor = new LambdaExpressionVisitor <NRefactory.ConstructorDeclaration>(); constructorDeclaration = methodDefinition.ResolveMothod <NRefactory.ConstructorDeclaration>(); constructorDeclaration = constructorDeclaration.AcceptVisitor(visitor, typeResolver) as NRefactory.ConstructorDeclaration; constructorDeclaration.AcceptVisitor(new ThisAdditionalReturnStatmentVisitor(), null); outParameters = proxy.GetOutParameters(constructorDeclaration); constructor = AstExpression.Constructor(constructorDeclaration, proxy.ProxiedType, outParameters, new NRefactoryAstVisitor()); constructorDeclaration = constructorDeclaration.AcceptVisitor(lambdaExpressionVisitor); parameters = constructor.Parameters.Concat(constructor.ContextParameter); return(Expression.Lambda <TDelegate>( Expression.Block(new[] { constructor.ContextParameter }, constructor), constructor.Parameters)); }