1
我是C++/CLI的新手,我想知道如何使用虛擬方法來包裝非託管C++類來管理和使用C#中的類?C++/CLI:如何使用虛擬方法包裝非託管類來管理和使用C#中的類?
不受管理的C++類:
class IProgression
{
public:
virtual ~IProgression(void) {}
virtual void sendProgression(int amount, int present) = 0;
};
sendProgression方法被用來發送進度信息到C#層。所以這是回調。
我有哪裏這個進程回調設置其他非託管C++類:
virtual void setProgression(IProgression * pIProgression) = 0;
所以我需要從C#設置回調接口,以非託管C++通過C++/CLI並獲得進展的信息返回到從非託管C C#++通過C++/CLI。
有人可以提供意見如何實現這一點,因爲我有點困惑與此?
非常感謝您快速回答wolle。我只是想知道爲什麼Wrapper類不需要在這種情況下被定義爲ref class?我實現了你的建議,並將IManagedProgression實現到C#端。我仍然很難將該接口封裝到Wrapper對象。我該怎麼做?我快到了。 – tonsten 2012-03-15 13:21:17
可能管理方應該使用事件,而不是接口。但這也會起作用。 – 2012-03-15 20:16:19
如何從C#端正確使用這個建議? – tonsten 2012-03-16 09:44:35