gpt4 book ai didi

c# nameof 原始参数正在被覆盖

转载 作者:行者123 更新时间:2023-11-30 19:55:30 25 4
gpt4 key购买 nike

我试图让检查 null 异常更容易,所以我创建了这个静态方法:

/// <summary>
/// Static method for throwing multiple argument null exceptions
/// </summary>
/// <param name="arguments">An array of arguments</param>
public static void ArgumentIsNull(params object[] arguments)
{

// For each argument, if the argument is null, throw an error
foreach (var argument in arguments)
if (argument == null)
throw new ArgumentNullException(String.Format(Resources.ArgumentNullException, nameof(argument)));
}

问题是,我的错误是这样的:

You're missing the required parameter: argument

我知道这是因为我正在循环的参数名称

var argument in arguments

我想做的是获取传递的参数的名称。例如,这是对此方法的调用:

/// <summary>
/// Default constructor
/// </summary>
/// <param name="unitOfWork"></param>
/// <param name="service"></param>
/// <param name="apiKey"></param>
public SendGridProvider(IUnitOfWork unitOfWork, EmailService service, string apiKey)
: base(apiKey, "https://api.sendgrid.com/v3/")
{

// Throw an error if our key is not provided
ThrowIf.ArgumentIsNull(unitOfWork, service, apiKey);

// Assign our fields
this.apiKey = apiKey;
this.service = service;
this.unitOfWork = unitOfWork;
}

因此,如果 unitOfWork 为空,我希望错误为

You're missing the required parameter: unitOfWork

我怎样才能做到这一点?

最佳答案

不幸的是,没有可靠的方法来做到这一点(除非您使用一些自定义的编译后代码编织工具)。 nameof( 在编译时解析,传入的变量在运行时设置。

在优化构建中,局部变量甚至在编译的 IL 代码中的任何位置都没有它们的原始变量名。

这是一个 Fody extension 的例子它通过代码编织执行基本的 NameOf 功能,也许您可​​以扩展它的功能以让它查看传入的内容并传递 string[] 以获取参数名称。

关于c# nameof 原始参数正在被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37348386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com