2012-02-14 88 views
3

我目前正在構建一個C++/cli互操作庫。該庫將被c#和vb.net應用程序使用,並且我想利用.Net 4動態類型。我有一個配置模塊,使用動態成員訪問來引用配置鍵,這在c#中工作正常,但給我在c + +/cli(並非完全意外)的麻煩 有什麼方法可以在C++/CLI中使用此庫(例如通過直接調用TryGetMember()或其他)?如果C++/CLI庫將動態配置傳遞給用C#編寫的派生類,那麼C#仍然能夠使用動態成員訪問嗎?請注意,基類是在C++/cli中定義的,所以我無法使用動態關鍵字。 (或者我會?)在C++/CLI中使用的動態C#對象

回答

2

有一個開源的庫,ImpromptuInterface(通過nuget發現),當涉及到dynamic關鍵字時,它簡化了c#編譯器使用的api,我假設它在C++/cli中工作,因爲它們只是靜態的c#功能。我知道它適用於F#,它也沒有DLR支持。

這是一個list動態調用它可以做的。

+0

這看起來很有前途,謝謝領先。我將在今天晚些時候進行整合 – 2012-02-17 15:47:18

1

C#/ VB動態類型由編譯器轉換爲普通類型和方法調用。生成的IL有點複雜,但不是特別的。您肯定可以編寫生成類似IL的C++/CLI代碼。

也許編寫C++/CLI代碼的最簡單方法是編寫在C#中使用動態類型的代碼,然後使用Reflector將程序集反編譯爲C++/CLI。

+1

請不要使用短語「託管C++」,除非您實際上正在討論.NET 1.x.目前的技術是C++/CLI。 – 2012-02-15 16:55:41

+0

感謝您的糾正 - 我沒有意識到這一點。我編輯了我的答案。 – 2012-02-15 18:35:58

+0

這對我的目的來說似乎有點笨拙,我也沒有反射器 – 2012-02-17 15:44:18