关于新记录功能的两个问题:
如何使用反射识别记录?看[这里][1]也许那里
是一种检测 EqualityContract
的方法,但我不确定这是否可行?
是否可以有一个通用类型是记录的通用约束?也就是说,是否可以使用约束指示类型参数 T 必须是记录类?
最佳答案
- How do I recognize a record using reflection ?
如果您尝试在 sharplab.io
中记录类(class)您会看到记录类是实现 IEquatable<T>
的常用类接口(interface)并包含用于比较和克隆记录类实例的其他成员。没有特殊属性表明该类是 record class
.
所以我猜测没有办法使用反射来确定一个类是否是记录类。
looking here maybe there is a way to detect the
EqualityContract
but I am not sure if that is the way to go ?
如果一个类具有这样的属性,可以使用反射来确定,但这并不能100%保证具有该属性的类是一个记录类。
- Is it possible to have a generic constraint that a generic type is a record ? that is if it is possible to indicate that type parameter T must be a record class using a constraint ?
这是不可能的。
T
必须是记录类。Champion records
页面,您将了解到无法指定类似 where T : record
的内容在 C# 9
.此外,我们计划在 C# 10
中消除记录和类之间任何有意义的语义差异。 .这样记录的特征如with
也将可用于类(class)。添加record
约束将使这个目标无法实现。https://stackoverflow.com/questions/63722177/
相关文章:
tensorflow - 如何将 tf.data.Dataset 与 kedro 一起使用?
flutter - 如何在Flutter中实现模糊背景Bottom Modal Sheet?
r - 如何使用 igraph R 包比较两个图以识别两个图之间相同/不同边的数量
stripe-payments - Stripe Checkout session 后如何在发票上获
android - 分享内容 : Permission Denial when using Inte
node.js - 安装react时npm启动问题,如何解决?