对于 .NET 4.5,CLR 团队补充说:
为什么没有为调用者的类型添加一个?
对于 .NET 4.5,CLR 团队补充说:
为什么没有为调用者的类型添加一个?
这对于设计团队之外的人来说很难回答,但我想说CallerTypeNameAttribute
.
file 和 line 属性为您提供了用于记录例程的扩展信息,否则这些信息是无法获得的。成员名称允许记录并简化实现,INotifyPropertyChanged
同时还允许安全名称重构而无需搜索字符串。
调用者类型已经可以通过 using 传递给给定的方法,typeof(CurrentType).Name
因此它可能不值得额外的属性。您可以说调用者成员的名称也可以使用MethodBase.GetCurrentMethod
,但这可能总是会强制反射,并且typeof
可能已被优化掉,因此您已经获得了安全重构的好处,并且对性能的影响较小。
使用typeof
而不是可能的属性的唯一缺点是属性方法不会受到混淆的影响。