Этот класс кажется гибридом. Вы указали публичный класс IPHelper, который на полпути к тому, что вы хотите. Вы должны указать это как общедоступный ref класс IPHelper. Однако даже в этом случае он все равно не будет хорошо взаимодействовать с управляемыми классами из-за типов параметров, которые он получает. Например, wchar_t отличается от System :: String ^ (управляемый C ++ способ объявления строк). Аналогично, LPWSTR также не совпадает с System :: String ^. В качестве примечания, вам лучше написать несколько служебных методов для преобразования между .NET System :: Strings и wchar_t и другими собственными строками, которые вам, скорее всего, понадобятся. Эта - отличная статья на MSDN о том, как конвертировать все типы строк.
Теперь я не знаю, хотите ли вы предоставить этот класс непосредственно C #, или этот класс в свою очередь обернут лучшей управляемой оболочкой, чем у вас здесь. Но в любом случае вы делаете это, методы класса Managed C ++ должны принимать типы .NET для непосредственного использования в коде C #.