是否有快捷方式将表达式的结果分配给命名变量?
我经常先写表达式,因为我不确定返回的数据类型。
让我们说:
Add(0.5, 1.5); // Luckily Intellisense tooltips tell me it returns double of 2.0
所以,必须手动编写:double result = <expression>
到:
double variable1 = Add(0.5, 1.5);
因为这几乎一直都在发生。是否有快捷方式/助手将结果指定为变量?
(代码用C#编写)
答案 0 :(得分:0)
我为Visual Commander创建了命令Create a typed variable from the current method invocation。它使用Roslyn,主要代码是:
Microsoft.VisualStudio.Text.SnapshotPoint caretPosition = textView.Caret.Position.BufferPosition;
Microsoft.CodeAnalysis.Document document = caretPosition.Snapshot.GetOpenDocumentInCurrentContextWithChanges();
Microsoft.CodeAnalysis.CSharp.Syntax.InvocationExpressionSyntax invocationExpressionNode =
document.GetSyntaxRootAsync().Result.FindToken(caretPosition).Parent.AncestorsAndSelf().
OfType<Microsoft.CodeAnalysis.CSharp.Syntax.InvocationExpressionSyntax>().FirstOrDefault();
if (invocationExpressionNode != null)
{
Microsoft.CodeAnalysis.SemanticModel semanticModel = document.GetSemanticModelAsync().Result;
Microsoft.CodeAnalysis.IMethodSymbol methodSymbol = semanticModel.GetSymbolInfo(invocationExpressionNode).Symbol as
Microsoft.CodeAnalysis.IMethodSymbol;
textView.TextBuffer.Insert(invocationExpressionNode.SpanStart, methodSymbol.ReturnType.ToString() + " v = ");
}