为什么.NET 4.5中没有CallerTypeNameAttribute?

时间:2012-08-29 20:28:21

标签: .net clr

使用.NET 4.5,CLR团队补充道:

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

1 个答案:

答案 0 :(得分:1)

设计团队以外的人很难回答,但我会说CallerTypeNameAttribute没有强大的用例。

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

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

使用typeof而不是可能属性的唯一缺点是属性方法不会受到模糊处理的影响。