![]() |
1
4
我不认为一定有一种语法上很酷的方法来实现这一点。一个可能的解决方案是定义一个可转换接口:
那么你的班级可能是:
我想这能让你接近你想去的地方…所有的foo和bar都在你的问题中,有时很难确定你的意图到底是什么。希望这有帮助。 编辑: 添加了位置约束…您可能必须能够在可转换类中创建新实例。
编辑2:
使foo继承自
|
![]() |
2
4
听起来你找到了解决更大问题的办法。要回答您的特定问题:不,C和CLR都不支持“向后”泛型类型参数约束。也就是说,
“t必须是foo或foo转换为的类型”不受支持。 有些语言有这种限制;iirc scala就是这样一种语言。我怀疑这个特性对于某些反变体接口的使用是很方便的。 |
![]() |
3
1
可以通过用作类型约束的接口绕行。
例如,
|
![]() |
4
1
与其经历定义接口和修改类以实现该接口的麻烦,为什么不这样做呢?
然后在处理类型为
顺便说一下(自从
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 4 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 4 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 4 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 5 月前 |