使用.NET 4.5,CLR团队补充道:
为什么没有为呼叫者的类型添加一个?
答案 0 :(得分:1)
设计团队以外的人很难回答,但我会说CallerTypeNameAttribute
没有强大的用例。
文件和行属性为您提供了无法获取的日志记录例程的扩展信息。成员名称允许记录并简化INotifyPropertyChanged
的实现,同时还允许安全的名称重构,而无需搜索字符串。
调用者类型已经可以使用typeof(CurrentType).Name
传递给给定方法,因此它可能不值得额外的属性。您可以说使用MethodBase.GetCurrentMethod
也可以获得调用者成员名称,但这可能总是强制反射并且typeof
可能已被优化掉,因此您已经获得了安全重构的好处并且对性能
使用typeof
而不是可能属性的唯一缺点是属性方法不会受到模糊处理的影响。