我想为对象创建一个扩展方法,检查对象是否为null并抛出异常(如果是).我想保留原始变量名称.我可以以某种方式从扩展方法中获取它吗?写作customer.NotNull("customer")vs 是"麻烦的" customer.NotNull().
不,不幸的是你不能。变量名称在运行时不可用。但是,您可以使用如下表达式:
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)