结合GetPropertyName +多个params函数(params关键字)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结合GetPropertyName +多个params函数(params关键字)相关的知识,希望对你有一定的参考价值。

我有一个像这样定义的函数:

public static string GetPropertyName<T>(Expression<Func<T>> memberExpression)
{
    MemberExpression expressionBody = (MemberExpression)memberExpression.Body;
    return expressionBody.Member.Name;
}

此函数返回它接收的参数的名称。

GetPropertyName(()=> SomeParameter) - >返回字符串“SomeParameter”

我的问题是将它与多个参数功能相结合。

采取这个功能:

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);

该函数返回“p”。

我想改为“param2”。有任何建议或暗示吗?

非常感谢。

答案

也许你可以做那样的事情

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;
    }

并执行

string param0 = "1";
string param1 = "2";
string param2 = null;
NameOfFirstEmptyParam(new {param0, param1, param2}); //"param2" will be returned

以上是关于结合GetPropertyName +多个params函数(params关键字)的主要内容,如果未能解决你的问题,请参考以下文章

oracle四表结合怎么查?(两条线)

如何使用 javascript 结合地理位置和多个标记?

Kotlin 结合多个 elvis 算子

将多个功能与 svm 相​​结合

结合多个成员资格测试[重复]

结合多个条件 Observable 来准备数据