.NET Extension methods from C++


Extension methods are a nice little feature now available in C# and VB.NET. They allow you to tack on new methods to existing classes for which you don’t own the original code. Now C++ does not support this natively and so I recently got bit when I was translating some C# code into C++ CLI.

While C# gave me nice Intellisense

image

C++ did not

image

The method I was calling on the NetworkCredential class did not exist in C++, only in C#. Intellisense had failed me!

The answer was simple once I realized that this was actually an extension method and how they are implemented. They are static methods on a different class which C# hooks up for you automagically. In C++ we need to call it directly, and pass in the “this” reference as the first parameter.

So a quick search in reflector or the online help turned up the actual class that implements GetWindowsAuthenticationToken(). It is WindowsLiveIdentityExtension.

image

And voila! working code again.

Comments (0)

Skip to main content