gpt4 book ai didi

c# - C# 中的编译时反射

转载 作者:IT王子 更新时间:2023-10-29 04:34:13 25 4
gpt4 key购买 nike

我经常编写必须使用魔术字符串来表示属性名称的 C# 代码。每个人都知道魔术弦的问题。它们很难重构,没有编译时检查,而且通常会导致难以诊断的问题。然而,C#/.NET 到处都使用它们来表示属性/类/方法名称。

这个问题多年来一直存在,目前唯一可行的解​​决方案是使用表达式树,然后在运行时解析属性名称。这可以让您满意地进行编译时检查,但它会使代码复杂化(需要 Expression 类型的参数),并且它会产生运行时成本。

有谁知道 C#/.NET 是否考虑过添加编译时反射来克服这个普遍存在的问题的功能?

这看起来很容易添加,这将是一个非破坏性的更改,并且将使许多开发人员受益匪浅。 typeof() 运算符已经执行了一种编译时反射形式,因此看起来像一个运算符 nameof()(或类似的东西)会非常受欢迎。

此外,有人知道此类功能有任何潜在问题吗?

感谢您的帮助。

最佳答案

Straight from the source - 这是一篇 C# 语言设计者的博客文章,这篇文章中的“用户”提出了与您相同的问题并得到了回答。作者说,需要为您想要请求的每个元数据项指定一个语法,这不是微不足道的——即。如果你想要“info-of”方法并且该方法被重载,你想要哪个重载?如果涉及泛型和显式接口(interface)实现怎么办?等等。事实证明,虽然由于这些原因它在 2009 年被认为不值得实现,但我们将在 2015 年在 C# 6 中获得它 - 请参阅 C# Language Design Notes for Jul 9, 2014 .

关于c# - C# 中的编译时反射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9335126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com