.net - 为什么 .NET 4.5 中没有 CallerTypeNameAttribute?

标签 .net clr

在 .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/

相关文章:

c# - 如何以 UTF-8 格式制作 Stream.Write() 输出

c# - C#中uint转int的编译时间转换

c# - 对于 64 位架构上的算术,.NET 是否将 Int32 提升为 Int64?

c# - 使用 Process.Start 运行 C++ exe 与使用 CLR 包装 C++ 代码

c# - CLR内部调用用什么语言编写?

c# - 格式化字符串 : Value 20000 to $20k?

C#/WPF - 从父窗口获取子用户控件内的对象

c# - 异步 I/O 方法是如何处理的

.net - 是否可以使用 WCF 完成大流量聊天?

c# - 检查空值后出现空引用异常(检查空值不起作用)