我想为对象创建一个扩展方法,检查对象是否为空,如果是则抛出异常。我想保留原来的变量名。我能以某种方式从扩展方法中获取它吗?必须编写 customer.NotNull("customer")
与 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);
关于c# - 从该方法中获取变量调用方法的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18175246/