【发布时间】:2011-12-08 02:37:27
【问题描述】:
string thing = "etc";
thing = thing.GetName();
//now thing == "thing"
这可能吗?
public static string GetName(this object obj)
{
return ... POOF! //should == "thing"
}
【问题讨论】:
-
你为什么要这样做?
-
作为一种扩展方法,我怀疑这很容易实现。另一方面,采用
LambdaExpression的方法可以做到这一点。 -
@MatthewFerreira 如果扩展方法版本不起作用,您可以告诉我如何使用 lambda 表达式来实现,我将不胜感激。但也许这应该是一个单独的问题?谢谢。
-
据我了解,编译代码后,局部变量实际上并没有名称。编译后的代码简单引用变量1、2、3...可以通过反射获取方法参数和类成员的名称。
-
@BrokenGlass 我只是在试验。使用@Scott 的匿名类型技巧,我可以做到
new {thing}.ThrowIfNull();。我猜它的性能很糟糕,但我认为我不必传入任何字符串就可以在错误消息中使用它,这很酷。
标签: c# .net reflection extension-methods stack-frame