作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 CallerArgumentExpression
attribute , 结合验证记录的建议 found here ,但表达式始终为空。我在 .NET6 Core 控制台应用程序中执行此操作。完全相同的代码在 LinqPad 7 (.NET6) 中运行良好。
我有一个基本的记录
,其中包含常见的验证方法(几乎是从其他答案中复制的)...
public record CommonValidation {
internal static bool NonEmptyOrNullString(string s, [CallerArgumentExpression("s")] string expr = default) {
if (string.IsNullOrWhiteSpace(s)) {
throw new ArgumentException($"{expr} cannot be null or empty");
}
return true;
}
internal static bool NonZeroInt(int n, [CallerArgumentExpression("n")] string expr = default) {
if (n < 0) {
throw new ArgumentException($"{expr} cannot be negative");
}
return true;
}
}
然后我可以创建一个记录
如下...
public record Address(string Street, string City, string State, string Country, string Postcode) : CommonValidation {
private bool _ = NonEmptyOrNullString(Street)
&& NonEmptyOrNullString(City)
&& NonEmptyOrNullString(State)
&& NonEmptyOrNullString(Country)
&& NonEmptyOrNullString(Postcode);
}
如果我尝试用一个空的 State
创建一个 Address
...
Address a = new("5 My Street", "Somewhere", "", "Oz", "12345");
...然后抛出异常,但是 expr
变量为空。正如我所说,完全相同的代码在 LinqPad 中运行良好,即使两者使用相同版本的 .NET/C#。
谁能解释一下控制台应用程序出了什么问题?谢谢
最佳答案
Visual Studio 2019 不支持 C# 10。确保您使用的是 Visual Studio 2022。LinqPad 7 支持,这就是它在那里工作的原因。
关于c# - `CallerArgumentExpression` 始终为空 (C# 10),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70263804/
我正在 C# 8 中试验 [CallerArgumentExpression]: static void Main(string[] args) { try { Pro
我正在尝试使用 CallerArgumentExpression attribute , 结合验证记录的建议 found here ,但表达式始终为空。我在 .NET6 Core 控制台应用程序中执行
我是一名优秀的程序员,十分优秀!