我经常使用扩展方法来检查方法参数
void MyMethod(string? test)
{
Require.NotNull(test, nameof(test));
// Same as
// if (test == null) throw new ArgumentNullExeception(nameof(test))
...
}
但是,当启用C#8的nullables
时,编译器认为使用扩展方法时,我没有检查参数是否为null。
是否可以将扩展方法Require.NotNull
标识为nullable
检查器?
ongoing work in roslyn#36039最终允许作者以将可空信息返回给编译器的方式来注释他们的方法。当前有一些功能正在预览中,但我不知道确切的状态。
但是,我会在这里质疑您的方法:如果您在方法中所做的第一件事是针对null进行检查并有效地引发异常,则将null值传递给您的方法是有效的输入。因此,您的方法不应以可以接受null的方式进行注释。您宁愿对其进行标记,以使其不接受空值,因此编译器会正确地告诉您您在哪里使用潜在的空值调用该方法。