我读了很多 不可用 问题和解答。看来,在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相反)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top