private void WrapInTryFunction_Apply(Object sender, ApplyContentEventArgs ea) { // INITIALIZE Class activeClass = CodeRush.Source.ActiveClass; Method activeMethod = CodeRush.Source.ActiveMethod; var builder = new ElementBuilder(); Logger.Log("WITF:Builder Built"); var method = builder.AddMethod(activeClass, "bool", "Try" + activeMethod.Name); method.IsStatic = activeMethod.IsStatic; Logger.Log("WITF:Method Created"); // PARAMS foreach (Param param in activeMethod.Parameters) { method.Parameters.Add(new Param(param.ParamType, param.Name)); } Param resultParam = builder.BuildParameter(activeMethod.GetTypeName(), "result", ArgumentDirection.Out); method.Parameters.Add(resultParam); Logger.Log("WITF:Params Added"); // METHOD CALL var arguments = new List<string>(); foreach (IParameterElement SourceParam in activeMethod.Parameters) { arguments.Add(SourceParam.Name); } Logger.Log("WITF:Arguments Built"); var methodCall = builder.BuildMethodCall(activeMethod.Name, arguments.ToArray()); Logger.Log("WITF:Methodcall Added"); var Try = builder.AddTry(method); Try.AddNode(builder.BuildAssignment("result", methodCall)); Try.AddNode(builder.BuildReturn("true")); Logger.Log("WITF:Try Added"); var ExCatch = builder.AddCatch(method); ExCatch.AddNode(builder.BuildAssignment("result", CodeRush.Language.GetNullReferenceExpression())); ExCatch.AddNode(builder.BuildReturn("false")); Logger.Log("WITF:Catch Added"); // RENDER METHOD activeClass.AddNode(method); var Code = CodeRush.CodeMod.GenerateCode(method, false); Logger.Log("WITF:Code Generated"); int LastLine = activeMethod.Range.End.Line; Logger.Log(String.Format("WITF:Last Line calculated = {0}", LastLine)); SourcePoint InsertionPoint = new SourcePoint(LastLine + 1, 1); Logger.Log(String.Format("WITF:InsertionPoint Calculated=(Line:{0},Offset:{1})", InsertionPoint.Line, InsertionPoint.Offset)); var newMethodRange = CodeRush.Documents.ActiveTextDocument.InsertText(InsertionPoint, Code); Logger.Log("WITF:Code Inserted"); CodeRush.Documents.Format(newMethodRange); Logger.Log("WITF:Code Formatted"); }