c# - 使用 SWIG 从 C++ 生成 C# 接口(interface)

标签 c# c++ interface mocking swig

如何使用 SWIG 通过 SWIG 从 C++ 生成 C# 接口(interface)(或至少是 C# 可模拟基类)?

给定:

C++:

class IWidget
{
public:
     virtual void Flob() = 0;
};

class Widget : public IWidget
{
public:
     void Flob() {};
};

我想输出 C#:

public interface IWidget
{
     void Flob();
}

public class Widget : IWidget
{...}

注意:解决方案不一定是接口(interface),但我确实需要能够使用模拟框架(例如 Moq 或 Rhino.Mocks)来模拟 C# Widget 类的基类。我的尝试只产生了没有公共(public)构造函数的生成的 C#。

最佳答案

您可以使用以下一项或多项获得您列出的输出:

  • csclassmodifiers
  • 在纯虚方法上使用 %ignore,使用 cscode 添加必要的方法声明。
  • csinterfaces 类型映射
  • csinterfaces_derived typemap

然而,这可能不是实现使类可模拟的目标的最简单方法。如果未使用 interface,请考虑扩展您的帖子以清楚地确定实现此目的所需的 c#。

另请查看这篇文章:http://swig.10945.n7.nabble.com/Multiple-inheritance-and-C-any-easy-workarounds-available-td11516.html .

抱歉,我无法提供实际的代码答案,希望上面的内容能帮到你。

关于c# - 使用 SWIG 从 C++ 生成 C# 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25734636/

相关文章:

java - 带类型参数的接口(interface)有什么用?

c# - 使用c#提高dacpac部署的性能

c# - session 状态提供程序关闭时如何在 ASP.NET 中访问自定义错误页面?

c# - 我如何解析挪威货币

c++ - 错误 : ld returned 1 exit status

java - 如何在 Java 中有条件地(通过字符串)创建实例?

java - 在哪里放置一个接口(interface)相关的变量,它不是静态的和最终的

c# - mvc 3 嵌套对象绑定(bind)

c++ - boost::ptr_vector 成员函数列表

c++ - 在 VS 15.7.5 中将 opencv 3.4.1 悬停在 Mat 上仍然卡住