使用LINQ(表达式)获取静态类中的静态属性的名称?

时间:2013-12-16 14:31:44

标签: c# linq properties static

请参阅下面的代码。我想创建一个单元测试并使用intellisense(用于重构和编译时错误目的)来获取静态类中静态属性的名称。我想要这个,因为我稍后从文件加载一个程序集,需要使用反射在静态类中获取静态属性的值。

我知道如何使用LINQ完成,请参阅下面的Hat类。但是,如何在类似的问题中获得LastWashed类的Underwear属性?

public class Test
{
    public static void TestFunction()
    {
        String NameOfColorPropertyOfHat = Hat.GetPropertyName(H => H.color);

        //How would I get the name of the property of the static class
    }
}

public static class Underwear
{
    public static DateTime LastWashed
    {
        get
        {
            return DateTime.Now.Subtract(TimeSpan.FromDays(3));
        }
    }
}

public class Hat
{
    public Color color
    {
        get
        {
            return Color.Green;
        }
    }

    public static string GetPropertyName(Expression<Func<Hat, object>> expression)
    {
        if (expression.Body is MemberExpression)
        {
            return ((MemberExpression)expression.Body).Member.Name;
        }
        else
        {
            var op = ((UnaryExpression)expression.Body).Operand;
            return ((MemberExpression)op).Member.Name;
        }
    }
}

0 个答案:

没有答案