从该方法中获取变量调用方法的名称

use*_*245 5 c#

我想为对象创建一个扩展方法,检查对象是否为null并抛出异常(如果是).我想保留原始变量名称.我可以以某种方式从扩展方法中获取它吗?写作customer.NotNull("customer")vs 是"麻烦的" customer.NotNull().

p.s*_*w.g 2

不,不幸的是你不能。变量名称在运行时不可用。但是,您可以使用如下表达式:

void NotNull<T>(Expression<Func<T>> expression)
{
    var me = expression.Body as MemberExpression;
    var name = me.Member.Name;
    var value = expression.Compile().Invoke();
    ...
}


NotNull(() => customer);
Run Code Online (Sandbox Code Playgroud)