2009-08-28 7 views
10

Pardonnez-moi si ma terminologie est un peu éteinte. Ma connaissance de C++/CLI est très limitée.Utilisation de méthodes d'extension C# à partir de C++/CLI gérés

J'ai une application MFC qui utilise une DLL avec l'option/clr activée. Cette DLL utilise un couple de DLL C# pour communiquer avec un serveur en utilisant WCF. Pour la plupart cela fonctionne bien.

Dans l'une des DLL C#, j'ai ajouté une méthode d'extension à la classe System.Net.IPAddress qui récupérera le masque de sous-réseau pour l'objet IPAddress (en utilisant la classe UnicastIPAddressInformation et son masque IPv4). La méthode d'extension fonctionne très bien sur le côté C#, mais je n'arrive pas à comprendre comment l'utiliser dans le code C++/CLI géré.

D'abord, est-ce encore possible? Si oui, à quoi ressemble la syntaxe du côté C++/CLI géré? Dois-je utiliser l'option/clr: pure pour que cela fonctionne?

Voici un exemple de la méthode d'extension:

using System.Net; 
using System.Net.NetworkInformation; 
public static class IPAddressExtensions 
{ 
    public static IPAddress GetSubnetMask(this IPAddress address) 
    { 
     UnicastIPAddressInformation addressInfo = address.GetAddressInformation(); // elided 
     return ((addressInfo != null) ? addressInfo.IPv4Mask : null); 
    } 
} 

Dans mon code managé C++, comment pourrais-je utiliser cette méthode d'extension, si elle est encore possible?

unsigned long bytes= 0x010000FF; // example address - 127.0.0.1 
IPAddress^ address = gcnew IPAddress(BitConverter::GetBytes(bytes)); 
IPAddress^ subnet = address->GetSubnetMask(); // how do I do this??? 

Répondre

13

Vous devez appeler simplement comme une méthode statique:

IPAddressExtensions::GetSubnetMask(address); 

La méthode « d'extension » est plus d'un tour du compilateur qu'une différence dans le CLR.

+0

@Reed Copsey: D'abord, merci! Deuxièmement, y a-t-il un bon didacticiel en ligne pour l'écriture de code C++ géré? La syntaxe m'échappe en ce moment, mais je dois y aller vite. Merci encore. –

+0

Je ne connais pas un bon tutoriel en ligne mais pour ceux qui sont toujours intéressés, je recommande "C++/CLI In Action" de Nishant Sivakumar publié par Manning. – jschroedl

+0

Voici un lien Amazon vers le livre susmentionné: http://www.amazon.com/CLI-Action-Manning-Nishant-Sivakumar/dp/1932394818 –

Questions connexes