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

标签 c#

我想为对象创建一个扩展方法,检查对象是否为空,如果是则抛出异常。我想保留原来的变量名。我能以某种方式从扩展方法中获取它吗?必须编写 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/

相关文章:

c# - Unity单例代码

c# - 如何显示 Servicestack api 站点的 "cover page"/重定向到另一个网站

c# - 为什么我的系统在写入控制台时会发出蜂鸣声

c# - (C#)带有虚方法的接口(interface)

c# - 不同网络中两个应用程序之间的命令

c# - 这个DateTime解析器怎么了?

c# - Automapper 和 MvcPager3 协同工作

C# MVC 模型在对 Controller 操作进行单元测试时始终有效

c# - 如何识别 Windows Mobile 2005 设备已连接到通讯座?

c# - Kestrel 中的 app.UseDefaultFiles 什么也没做?