在 .NET 4.5 中,CLR 团队添加了:
为什么没有为调用者的类型添加一个?
最佳答案
设计团队之外的人很难回答这个问题,但我想说,CallerTypeNameAttribute
没有强大的用例。
文件和行属性为您提供了记录例程的扩展信息,否则这些信息将无法获得。成员名称允许记录并简化 INotifyPropertyChanged
的实现,同时还允许安全的名称重构,而无需搜索字符串。
调用者类型已经可以使用typeof(CurrentType).Name
传递给给定的方法,因此它可能不需要额外的属性。您可以说调用者成员名称也可以使用 MethodBase.GetCurrentMethod 来获取,但这可能总是强制反射,并且 typeof 可能已被优化掉,因此您已经获得了好处安全重构和对性能的影响较小。
使用 typeof
而不是可能的属性的唯一缺点是属性方法不会受到混淆的影响。
关于.net - 为什么 .NET 4.5 中没有 CallerTypeNameAttribute?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12185983/