c# – Roslyn的“.WithFooToken()”调用是多余的吗?
发布时间:2020-12-15 06:29:11 所属栏目:百科 来源:网络整理
导读:我正在尝试使用 LinqPad运行片段的Roslyn代码生成功能. LinqPad的.Dump()扩展方法将对象的格式化视图呈现到“结果”窗格. 由http://roslynquoter.azurewebsites.net/生成的代码包含许多代码,除了添加膨胀之外似乎没有做太多其他代码.以下代码输出返回null; .
我正在尝试使用
LinqPad运行片段的Roslyn代码生成功能. LinqPad的.Dump()扩展方法将对象的格式化视图呈现到“结果”窗格.
由http://roslynquoter.azurewebsites.net/生成的代码包含许多代码,除了添加膨胀之外似乎没有做太多其他代码.以下代码输出返回null; .WithFooToken(…)调用是否被注释掉. using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; var syn = SyntaxFactory.ReturnStatement( SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression) // .WithToken(SyntaxFactory.Token(SyntaxKind.NullKeyword)) ) // .WithReturnKeyword( // SyntaxFactory.Token(SyntaxKind.ReturnKeyword) // ) // .WithSemicolonToken( // SyntaxFactory.Token(SyntaxKind.SemicolonToken) // ) ; syn.NormalizeWhitespace().ToFullString().Dump(); 对于所有语言,此类调用是可选的,还是仅针对在Roslyn支持库中内置了合理默认值的语言? 解决方法
是的,在简单的情况下,这些调用是没有必要的.
The code of RoslynQuoter有RemoveRedundantModifyingCalls选项,我认为它应该完全符合您的要求.但它没有实施,the only usage被注释掉了:
private void AddModifyingCall(ApiCall apiCall,MethodCall methodCall) { // TODO: this needs scripting ////if (RemoveRedundantModifyingCalls) ////{ //// var before = Evaluate(apiCall,UseDefaultFormatting); //// apiCall.Add(methodCall); //// var after = Evaluate(apiCall,UseDefaultFormatting); //// if (before == after) //// { //// apiCall.Remove(methodCall); //// } ////} apiCall.Add(methodCall); return; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |