如何在 C++/CLI 中声明将被视为 C# 中的扩展方法的方法?
我正在用 C++/CLI 编写一个 .NET 程序集,以便在我们基于 C# 的应用程序中使用。 我希望应用程序将某些 C++ 方法视为扩展方法。 是否有一些属性可以应用于声明来指定某个方法应被视为 C# 的扩展方法?
I'm writing a .NET assembly in C++/CLI to be used in our C#-based application. I'd like the application to see some of the C++ methods as extension methods. Is there some attribute I can apply to the declaration to specify that a method should be seen as an extension method from C#?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我遇到了同样的问题,这里是 C++/CLI 中扩展方法的一个小例子:
这个扩展方法可以像 C# 中的任何其他方法一样使用:
不幸的是,C++ 似乎没有像 C# 那样为我们提供“语法糖” 。 至少我没有找到。
I had the same problem and here is a little example of an extension method in C++/CLI:
This extension method can be used just like any other in C#:
Unfortunately it seems C++ does not provide us with the "syntactic sugar" like in C#. At least I did not find it.
使用
Extension
属性应用于类和方法。这里棘手的一点可能是静态类的概念 - C++/CLI 中可能不存在......我不确定。 当检测扩展方法时,C# 编译器可能并不真正关心该类是否是静态的,而仅在声明扩展方法时才关心。 没有它当然值得一试。
Make it a static method in a non-nested, non-generic static class, with the
Extension
attribute applied to both the class and the method.The tricky bit here may be the concept of a static class - that may not exist in C++/CLI... I'm not sure. It's possible that the C# compiler doesn't really care whether or not the class is static when detecting an extension method, only when declaring one. It's certainly worth a try without it.
我认为你不能。 扩展方法只是语法糖,由编译器转换为静态方法。
I don't think you can. Extension methods are merely syntactic sugar, converted to static methods by the compiler.