如何解决C#9记录:如何指定必须为记录的泛型T
我正在试验C#9 RC,将现有应用程序转换为使用新的record
结构和关联的with
关键字。
我定义的记录类型中有很大一部分实现了此接口(已修改为使用init
而不是set
关键字):
public interface IHasModifiedDate
{
DateTime ModifiedDate {get; init;}
}
(注意:实现此接口的特定类没有-也不能拥有共同的超类)。
我正在尝试更新一个通用的帮助程序功能,该功能允许更新修改的日期(其中'updated' now 的意思是:使用{{1} }),即:
with
这会产生(合理的)编译错误:接收器类型'T'不是有效的记录类型,因此不能使用public static T UpdateModifiedDate<T>(T obj,DateTime whenTo) where T: IHasModifiedDate
{
return obj with {ModifiedDate = whenTo};
}
关键字。
我希望能够在T上添加约束,以指定T实际上是with
(以与您可以指定T必须为类相同的方式),例如:
record
但是在这种情况下无法识别public static T UpdateModifiedDate<T>(T obj,DateTime whenTo) where T: record,IHasModifiedDate
{
return obj with {ModifiedDate = when};
}
关键字。
还有其他方法可以指定T是记录吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。