我有一个像这样定义的函数:
public static string GetPropertyName<T>(Expression<Func<T>> memberExpression)
{
MemberExpression expressionBody = (MemberExpression)memberExpression.Body;
return expressionBody.Member.Name;
}
此函数返回它接收的参数的名称。
GetPropertyName(()=&gt; SomeParameter) - &gt;返回字符串&#34; SomeParameter&#34;
我的问题是将它与多个参数功能相结合。
采取此功能:
public static string NameOfFirstEmptyParam(params string[] parameters)
{
foreach (string p in parameters)
{
if (String.IsNullOrWhiteSpace(p))
return GetPropertyName<String>(() => p)
}
return null;
}
你可以想象,如果我们这样做:
string param0 = "0";
string param1 = "1";
string param2 = null;
NameOfFirstEmptyParam(param0, param1, param2);
该函数返回&#34; p&#34;。
我想得到&#34; param2&#34;代替。有任何建议或暗示吗?
非常感谢。
答案 0 :(得分:2)
也许你可以做那样的事情
Go-to-previous-app
并执行
public static string NameOfFirstEmptyParam<T>(T parameters) where T: class
{
var propertyInfos = typeof(T).GetProperties();
for (var i = 0; i < propertyInfos.Length; i++)
{
if (string.IsNullOrEmpty(propertyInfos[i].GetMethod.Invoke(parameters, null)?.ToString()))
return propertyInfos[i].Name;
}
return null;
}