有没有办法使.net Cast扩展方法使用用户定义的隐式强制转换操作符
本文关键字:定义 用户 操作符 转换 方法 net Cast 扩展 有没有 | 更新日期: 2023-09-27 18:01:19
当我定义一个隐式强制转换操作符,然后尝试使用Cast<T>
扩展方法在整个对象集合上调用它时,我得到一个InvalidCastException。这个问题有什么解决办法吗?
不,Cast
将每个项目视为Object
并将其强制转换为目标类型,因此它不能使用用户定义的转换,因为转换是静态解析的。你可以这样做:
collection.Select(x => (YourType)x)
No.
Cast
是CLR方法。它不包含c#特定的绑定规则,因为它独立于任何特定的CLR语言。隐式转换是一些。net语言特有的。
你必须创建你自己的Cast
版本