ees*_*ein 1 .net c# cil .net-4.0
我正在开发一个WPF应用程序,用于验证文件中的C#代码.
我能够获取该文件,并针对不同的需求实例化其类型.
现在我需要的是根据我设置的某些标准验证代码.我的意思是什么?
假设我有一个文件"Test.cs",这个文件有以下代码:
using xpto;
using abcd;
public class Test
{
public static void Testing()
{
Iqueryable<XYZ> var1 = ctx.Where(c => c.IdSomething == number);
var1 = var1.Where(v => v.Count(x => x.ValZ) > 0);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我将实例化此文件(已经完成),然后根据某些规则验证它.例如,在这一行:
var1 = var1.Where(v => v.Count(x => x.ValZ) > 0);
Run Code Online (Sandbox Code Playgroud)
我想告诉该文件正在使用Count(...) > 0
而不是Any()
.我知道可以通过文本读取文件来完成,但我想知道是否可以使用反射,或任何其他不需要这种硬编码的方式.这是我实例化文件(这是一个工作示例):
CompilerResults cr = provider.CompileAssemblyFromFile(cp, sourceFile.FullName);
Type instanceType = cr.CompiledAssembly.GetExportedTypes()
.FirstOrDefault(e => e.Name.Equals(className));
Run Code Online (Sandbox Code Playgroud)
如果不清楚,请告诉我,我可以尝试详细说明.
好吧,即使问题过于笼统,你也可以使用Microsoft Roslyn.该编译器作为一种服务,你可以用它来获得AST
从提供的代码,并收到你所需要的所有信息nececssary.
由于这是一件很重要的事情,所以很难在这里提出一些简短而自我解释的答案.查看"如何运行东西"的具体示例更容易,例如:
归档时间: |
|
查看次数: |
2479 次 |
最近记录: |