从我的C#类中看不到C ++ / CLI接口

时间:2014-04-14 13:30:03

标签: c#-4.0 visual-studio-2012 c++-cli

我在C ++ / CLI中有一个接口,我需要在C#中实现,但我不可见。但是我有其他类(我可以继承的抽象和具体的)。

我的C ++ / CLI界面:

namespace MyNamespace { namespace MySubnamespace { 

public interface class ITestInterface
{
public:
    property bool FirstProperty
    {
        bool get();
    }

    property bool SecondProperty
    {
        bool get();
    }

};

}}

我有一个测试项目,我使用托管库中的所有功能,但界面永远不会显示。

我如何尝试在我的C#测试项目中使用它:(我也试过从类库项目中使用它,它也不起作用)。

public class Test: MyNamespace.MySubnamespace.ITestInterface
{

}

我得到" 无法解析符号' ITestInterface' "

我错过了什么?

更新

在我对我的问题的评论之后,我一直在尝试不同的事情,我发现如果我将.h文件包含在我的C ++ / CLI项目的其他.h文件中,那么该类就变得可见了。 基本上我只是这样做:

#include "ITestInterface.h"

在我的一个C ++ / CLI项目的其他.h文件中,C#项目可以看到该类。

有没有办法可以避免这样做?

1 个答案:

答案 0 :(得分:4)

C ++ / CLI与C ++类似,只是直接编译.cpp文件。头文件仅在包含时编译。这就是为您的界面标题添加#include的原因。

有几种方法可以确保您的代码包含在C ++ / CLI类中:

  • 同时拥有.h和.cpp文件(即使.cpp文件只包含它对应的.h文件)
  • 只包含文件,然后将所有标题包含在一个.cpp文件中(除了包含文件外可能为空)
  • 只有.cpp文件(如果其他代码不引用此代码则没问题)