我如何在今天的C#中接近不可删除的参考类型?
-
24-09-2019 - |
题
我读了很多 不可用 问题和解答。看来,在C#(4.0)中接近不可破坏类型的最佳方法是Jon Skeet的 不可撤消的<> 黑客。
但是,C ++/CLI似乎通过支持托管参考来解决了很多问题: Foo%
(而不是本地C ++ Foo&
)。编译器通过添加 modreq(IsImplicitlyDereferenced)
争论。尝试从C#调用此功能结果:
'<FunctionName>' is not supported by the language
有什么更好的 不可撤消的<>?
有什么方法可以(合理地 - 使用反射)调用C ++/CLI方法 Foo::Method(Bar%)
来自C#?
编辑 看来目前没有什么比 不可撤消的<>...我希望我能对C ++/CLI的内容有一些评论,因为它至少具有部分解决方案。
解决方案
我已经遇到了几次……我还没有找到比Skeet的解决方案更好的东西。它解决了我遇到的所有案件,因此我必须投票。
我同意我们必须诉诸于此有点黑客的情况……但是他的解决方案确实解决了问题。
其他提示
是的,规格#: http://research.microsoft.com/en-us/projects/specsharp/
- 编辑:我只是注意到您说C#4.0;我相当确定规格#不支持该版本。尽管如此,值得回顾。
您也可以(我认为)在稍后的阶段检查,然后通过Gendarme中的规则进行编译: http://www.mono-project.com/gendarme (假设与4.0相反)
不隶属于 StackOverflow