Простите, если моя терминология немного не в порядке. Мои знания по управляемому C ++ / CLI очень ограничены.
У меня есть приложение MFC, которое использует dll с включенной опцией / clr. Эта библиотека использует пару библиотек C # для связи с сервером с использованием WCF. По большей части это работает нормально.
В одной из библиотек C # я добавил метод расширения в класс System.Net.IPAddress, который будет извлекать маску подсети для объекта IPAddress (используя класс UnicastIPAddressInformation и его IPv4Mask). Метод расширения прекрасно работает на стороне C #, но я не могу понять, как использовать его в управляемом коде C ++ / CLI.
Во-первых, это вообще возможно? Если да, то как выглядит синтаксис на стороне управляемого C ++ / CLI? Должен ли я использовать параметр / clr: pure, чтобы это работало?
Вот пример метода расширения:
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);
}
}
Как мне использовать этот метод расширения в моем управляемом коде C ++, если это вообще возможно?
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???