2009-08-28 14 views
10

Przebacz mi, jeśli moja terminologia jest trochę nieaktualna. Moja wiedza na temat zarządzanego C++/CLI jest bardzo ograniczona.Korzystanie z metod rozszerzania C# z zarządzanego C++/CLI

Mam aplikację MFC, która używa biblioteki dll z włączoną opcją/clr. Ta biblioteka dll wykorzystuje kilka bibliotek dll C# do komunikacji z serwerem za pomocą WCF. W większości przypadków to działa dobrze.

W jednym z bibliotek C# dodałem metodę rozszerzenia do klasy System.Net.IPAddress, która pobierze maskę podsieci dla obiektu IPAddress (przy użyciu klasy UnicastIPAddressInformation i jej maski IPv4). Metoda rozszerzenia działa świetnie po stronie C#, ale nie mogę wymyślić, jak go używać w zarządzanym kodzie C++/CLI.

Po pierwsze, czy to możliwe? Jeśli tak, jak wygląda składnia po zarządzanej stronie C++/CLI? Czy muszę używać opcji/clr: pure, aby to działało?

Oto przykład metody wydłużania:

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); 
    } 
} 

W moim managed kodu C++, w jaki sposób korzystać z tej metody rozszerzenie, jeśli to w ogóle możliwe?

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??? 

Odpowiedz

13

Trzeba po prostu nazwać jak metoda statyczna:

IPAddressExtensions::GetSubnetMask(address); 

„rozszerzenie” metoda jest bardziej trick kompilatora niż różnica w CLR.

+0

@Reed Copsey: Po pierwsze, dzięki! Po drugie, czy istnieje dobry samouczek online do pisania zarządzanego kodu C++? Składnia ucieka w tej chwili, ale muszę się w niej szybko spieszyć. Dzięki jeszcze raz. –

+0

Nie znam dobrego samouczka online, ale dla tych, którzy wciąż są zainteresowani, polecam "C++/CLI In Action" autorstwa Nishanta Sivakumara wydane przez Manninga. – jschroedl

+0

Oto link do Amazon z wyżej wymienioną książką: http://www.amazon.com/CLI-Action-Manning-Nishant-Sivakumar/dp/1932394818 –

Powiązane problemy