请参阅下面的代码。我想创建一个单元测试并使用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;
}
}
}