为什么.NET 4.5中没有CallerTypeNameAttribute?

Dan*_*ite 11 .net clr

在.NET 4.5中,CLR团队补充道:

为什么没有为呼叫者的类型添加一个?

Joã*_*elo 2

对于设计团队之外的人来说,这个问题很难回答,但我想说的是,没有强有力的用例CallerTypeNameAttribute

文件和行属性为您提供了记录例程的扩展信息,否则这些信息将无法获得。成员名称允许记录并简化实现INotifyPropertyChanged,同时还允许安全名称重构,而无需搜索字符串。

调用者类型已经可以通过使用传递给给定的方法typeof(CurrentType).Name,因此它可能不需要额外的属性。您可以说,调用者成员名称也可以使用获取MethodBase.GetCurrentMethod,但这可能总是强制反射,并且typeof可能会被优化掉,因此您已经获得了安全重构的好处,并且对性能的影响较小。

使用而不是可能的属性的唯一缺点typeof是属性方法不会受到混淆的影响。