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???
@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. –
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
Oto link do Amazon z wyżej wymienioną książką: http://www.amazon.com/CLI-Action-Manning-Nishant-Sivakumar/dp/1932394818 –