WinRT 组件内 C++ 类 之间的互操作

Interop between C++ classes inside an WinRT component

目前我正在使用本机 C++ 处理 WinRT dll 组件以呈现 directx,并且喜欢在 C# 项目中使用此组件。

想法是让一个 class(例如 A)进行绘图并将相关 public 方法公开给 WinRT。这工作正常。但是现在我需要在 dll 项目中使用 public 方法中用户定义类型的助手 class (B)。那个助手 class 只需要在 dll 组件中可见,并且只被 A 用作私有成员。不幸的是,这个 class B 也暴露给 WinRT,这意味着我不能使用用户定义的 types/classes 在 public 方法中。简而言之,我喜欢做这样的事情:

    public ref class A sealed
    {
        public:
            void addRenderData(float ...);

        private:
        B helper;
        ...
    }

    class B
    {
        public:
            void addMeasurement(MyOwnStruct* m);
            AnyC++Type doSomething();
        private:
        ...
    }

是否有可能以某种方式声明我的助手 class B,它只能在 dll 程序集(完全用 C++ 编写)中使用并摆脱 "signature of public member contains native type"

我不喜欢为我的 WinRT 组件使用的计算生成额外的 c++ dll 的想法

任何有关此主题的帮助将不胜感激:-)

好的,我明白了...确实很简单,只需使用内部关键字!我之前尝试用这个关键字解决这个问题,但仅限于 class 级别,这是不可能的,因为它是本机 c++ class。无论如何,当你对成员使用 internal 时,一切都很好:

internal:
    list<Line>* getRenderPoints();

现在只有我的 DirectX 组件作为控件公开给 WinRT,在这之后我可以在不同的 c++ 本机中很好地实现逻辑 classes