草庐IT

c# - 无法从用法中推断出开放泛型类型参数

在这个问题中,当提到编译器时,我实际上指的是Roslyn编译器。使用IntelliSense时会出现问题,这被认为是相同的编译器。出于演示目的和完整性,使用了以下类(使用带有C#6.0和.NET4.6.1的VisualStudio2015):publicclassA{publicIEnumerableB{get;set;}}publicclassB{publicIEnumerableC{get;set;}}publicclassC{}publicclassHelper{}看下面的扩展方法:publicstaticvoidFooBar(thisHelper>helper,Expressi

c# - 如何从 FieldDeclarationSyntax 节点获取 Roslyn FieldSymbol?

我正在尝试使用Roslyn来确定项目的公开API(然后使用此信息进行一些进一步处理,所以我不能只使用反射)。我正在使用SyntaxWalker访问声明语法节点,并为每个节点调用IModel.GetDeclaredSymbol。这似乎适用于方法、属性和类型,但似乎不适用于字段。我的问题是,如何获取FieldDeclarationSyntax节点的FieldSymbol?这是我正在使用的代码:publicoverridevoidVisitFieldDeclaration(FieldDeclarationSyntaxnode){varmodel=this._compilation.GetSe

【C#】微软的Roslyn 是个啥?

一、说明        Roslyn是微软重写的C#编译器并开源。        Roslyn 是C#和VisualBasic.NET开源编译器的代号。以下是它如何在过去十年企业Microsoft的最黑暗中开始,并成为所有C#(和VB)的开源,跨平台,公共语言引擎,我将在本文的其余部分将其视为给定的)。二、Roslyn的历史渊源        当在2005年加入Microsoft时,关于什么将成为Roslyn的第一次对话已经在进行中—就在.NET2.0发布之前。那次谈话是关于用C#重写C#。这是编程语言的正常做法;语言成熟的证明。但还有一个更实际和更重要的动机:作为C#的创建者,我们自己不是用

c# - C# 6 中的空条件运算符和字符串插值

执行null-conditionaloperator和interpolatedstrings语法解析为syntacticsugar?空条件运算符(?.),它允许通过减少“过度”null检查和内插字符串(("\{X},\{Y}"))是C#6中的新功能,它将参数和格式合二为一。这些是否被编译成不受欢迎的对应物(即我们试图避免的丑陋代码)?对于这个幼稚的问题,我深表歉意,我对一般语言没有最好的理解,但我很好奇是否可以在C#5上运行这些功能。我知道在某些情况下Java就是这种情况,这些示例也是如此吗? 最佳答案 没有一般规则,它有所不同。有

c# - C# 6 中的空条件运算符和字符串插值

执行null-conditionaloperator和interpolatedstrings语法解析为syntacticsugar?空条件运算符(?.),它允许通过减少“过度”null检查和内插字符串(("\{X},\{Y}"))是C#6中的新功能,它将参数和格式合二为一。这些是否被编译成不受欢迎的对应物(即我们试图避免的丑陋代码)?对于这个幼稚的问题,我深表歉意,我对一般语言没有最好的理解,但我很好奇是否可以在C#5上运行这些功能。我知道在某些情况下Java就是这种情况,这些示例也是如此吗? 最佳答案 没有一般规则,它有所不同。有

c# - Roslyn 功能/模式分支 (C# 7) - 如何启用实验性语言功能

我想试验潜在的C#7future语言特性。我有一个虚拟机,我已将Roslyn代码库(功能/模式分支)下载到其中,并按照Roslyn的github上的描述进行构建:BuildingandTestingonWindows.我可以成功启动一个新的VisualStudio实验实例(将VisualStudioSetup设置为启动项目并运行)。当我尝试新的语言特性(模式匹配和本地函数)时,我在编辑器中收到一个波浪形的错误,并且在构建时也出现错误:ErrorCS8058Feature'localfunctions'isexperimentalandunsupported;use'/features:

c# - Roslyn 功能/模式分支 (C# 7) - 如何启用实验性语言功能

我想试验潜在的C#7future语言特性。我有一个虚拟机,我已将Roslyn代码库(功能/模式分支)下载到其中,并按照Roslyn的github上的描述进行构建:BuildingandTestingonWindows.我可以成功启动一个新的VisualStudio实验实例(将VisualStudioSetup设置为启动项目并运行)。当我尝试新的语言特性(模式匹配和本地函数)时,我在编辑器中收到一个波浪形的错误,并且在构建时也出现错误:ErrorCS8058Feature'localfunctions'isexperimentalandunsupported;use'/features:

Net 编译器平台--- Roslyn Scripting APIs

引言上一篇中.Net编译器平台---Roslyn,介绍了Roslyn的各项功能,包括公开API,使用语法,使用语义,使用工作区等功能。那么回到上一篇中提到的问题,实现类似这样的功能(以下代码为伪代码):stringscriptText="inta=1;intb=2;returna+b;";varresult=Script.Run(scriptText);就用到了上一篇提到的ScriptingAPIs,还是先了解一下Roslyn提供的ScriptingAPIs有哪些。官方文档(https://github.com/dotnet/roslyn/blob/main/docs/wiki/Scripti

c# - 使用 Roslyn 查找对方法的所有引用

我正在寻找扫描一组.cs文件以查看哪些调用了ValueNullable的属性(查找所有引用资料)。例如,这将匹配:classProgram{staticvoidMain(){int?nullable=123;intvalue=nullable.Value;}}我了解了Roslyn并查看了一些示例,但其中许多已经过时并且API庞大。我该怎么做呢?我在解析语法树后卡住了。这是我目前所拥有的:publicstaticvoidAnalyze(stringsourceCode){vartree=CSharpSyntaxTree.ParseText(sourceCode);tree./*???Wh

c# - 使用 Roslyn 查找对方法的所有引用

我正在寻找扫描一组.cs文件以查看哪些调用了ValueNullable的属性(查找所有引用资料)。例如,这将匹配:classProgram{staticvoidMain(){int?nullable=123;intvalue=nullable.Value;}}我了解了Roslyn并查看了一些示例,但其中许多已经过时并且API庞大。我该怎么做呢?我在解析语法树后卡住了。这是我目前所拥有的:publicstaticvoidAnalyze(stringsourceCode){vartree=CSharpSyntaxTree.ParseText(sourceCode);tree./*???Wh