/// <summary> /// Swap object creation to built in type. /// </summary> /// <param name="objectCreationExpressionNode"> /// The object creation expression node. /// </param> private static void SwapObjectCreationToBuiltInType(IObjectCreationExpression objectCreationExpressionNode) { IPsiModule project = objectCreationExpressionNode.GetPsiModule(); using (WriteLockCookie.Create(true)) { IObjectCreationExpression tmpExpression = (IObjectCreationExpression) CSharpElementFactory.GetInstance(project).CreateExpression("new $0?()", new object[] { objectCreationExpressionNode.Type() }); objectCreationExpressionNode.SetCreatedTypeUsage(tmpExpression.CreatedTypeUsage); } }
protected override Action <ITextControl> ExecutePsiTransaction(ISolution solution, IProgressIndicator progress) { using (WriteLockCookie.Create()) { var scriptableObjectType = TypeFactory.CreateTypeByCLRName(KnownTypes.ScriptableObject, myWarningCreationExpression.GetPsiModule()); var factory = CSharpElementFactory.GetInstance(myWarningCreationExpression); var newExpression = factory.CreateExpression("$0.CreateInstance<$1>()", scriptableObjectType, myWarningCreationExpression.ExplicitType()); ModificationUtil.ReplaceChild(myWarningCreationExpression, newExpression); } return(null); }