使用 Roslyn 的方法的参数验证

Parameter validation for a method using Roslyn

我想在编译时为扩展方法执行参数验证。

像这样

这是我要验证的程序的示例代码

public class Program
{
    static void Main(string[] args)
    {
        var sample = new Sample();
        var output = sample.SampleMethod("To Validate");  // I want to validate this param
    }
}

public static class Ext
{
    public static string SampleMethod(this Sample sample, string sampleParam)
    {
        return sampleParam + " Hello";
    }
}

public class Sample
{

}

我打算使用 Roslyn,但我不知道 Action 注册和获取传递的参数值。

使用 Roslyn 验证方法参数的示例代码将非常有用

您可以使用https://sharplab.io/查看代码的语法树。

您可能想要注册一个操作而不是一个动作:

context.RegisterOperationAction(YourAnalyzer, OperationKind.Invocation);

您可以在这些存储库中找到很多示例:

  1. https://github.com/dotnet/roslyn-analyzers
  2. https://github.com/DotNetAnalyzers/StyleCopAnalyzers
  3. https://github.com/code-cracker/code-cracker