我有这个
public static class Parameters
{
public static void Required<T>(this T parameter, string paramName) where T : class
{
if (parameter == null)
{
throw new ArgumentNullException(paramName);
}
// ...
}
}
我像这样使用它
Parameters.Required(settings, nameof(settings));
是否可以从Required
方法中删除第二个参数并以某种方式获得原始参数名称?不,对吧?
答案 0 :(得分:2)
您可以使Requred函数接受一个表达式。从表达式中可以读出成员名称的名称。描述为here。
public static void Required<T>(Expression<Func<T>> parameter) where T : class
{
if (parameter.Compile().Invoke() == null)
{
var caller = ((MemberExpression)parameter.Body).Member.Name;
throw new ArgumentNullException(caller);
}
// ...
}
并这样称呼它:
Parameters.Required(() => settings);