12

对于 .NET 4.5,CLR 团队补充说:

为什么没有为调用者的类型添加一个?

4

1 回答 1

2

这对于设计团队之外的人来说很难回答,但我想说CallerTypeNameAttribute.

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

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

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

于 2012-08-29T20:39:32.960 回答