当前位置:  开发笔记 > 编程语言 > 正文

打印属性名称(不是您想的)

如何解决《打印属性名称(不是您想的)》经验,为你挑选了1个好方法。



1> Marc Gravell..:

假设您不想使用字符串,最常见的答案是通过Expression- 基本上模拟缺失infoof; 你必须使用类似的东西:

    Console.WriteLine("Begin");
    var myClass = new MyClass();
    Util.Print(() => myClass.Id);
    Util.Print(() => myClass.Server);
    Util.Print(() => myClass.Ping);
    Console.WriteLine("End");

假设它们都是属性/字段(编辑添加的方法调用支持):

 public static class Util
{
    public static void Print(Expression> expr)
    {
        WriteExpression(expr);
    }
    public static void Print(Expression expr) // for "void" methods
    {
        WriteExpression(expr);
    }
    private static void WriteExpression(Expression expr)
    {
        LambdaExpression lambda = (LambdaExpression)expr;
        switch (lambda.Body.NodeType)
        {
            case ExpressionType.MemberAccess:
                Console.WriteLine(((MemberExpression)lambda.Body)
                    .Member.Name);
                break;
            case ExpressionType.Call:
                Console.WriteLine(((MethodCallExpression)lambda.Body)
                    .Method.Name);
                break;
            default:
                throw new NotSupportedException();
        }
    }
}

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有