当我通过反射进入其中时,我想获取属性名称。是否可以?
我有这样的代码:
public CarType Car
{
get { return (Wheel) this["Wheel"];}
set { this["Wheel"] = value; }
}
因为我需要更多这样的属性,所以我想做这样的事情:
public CarType Car
{
get { return (Wheel) this[GetThisPropertyName()];}
set { this[GetThisPropertyName()] = value; }
}
由于属性实际上只是方法,因此您可以执行此操作并清理返回的 get:
class Program
{
static void Main(string[] args)
{
Program p = new Program();
var x = p.Something;
Console.ReadLine();
}
public string Something
{
get
{
return MethodBase.GetCurrentMethod().Name;
}
}
}
如果您分析性能,您应该会发现 MethodBase.GetCurrentMethod() 比 StackFrame 快很多。在 .NET 1.1 中,您还会遇到发布模式下的 StackFrame 问题(据我记忆,我发现它快了 3 倍)。
也就是说,我确信性能问题不会造成太大的问题——尽管关于 StackFrame 缓慢的有趣讨论可以是在这里找到 http://osdir.com/ml/log.log4net.user/2005-06/msg00049.html.
我想如果您担心性能,另一个选择是创建一个 Visual Studio Intellisense 代码片段,它为您创建属性,并创建与属性名称相对应的字符串。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)