I decided as part of my .NET 3.5 learning curve to rebuild Duncan Mackenzie ’s Xbox to Twitter application just for fun…
When you call his web service you get a XboxInfo class back that contains all of your Xbox Live Information. I wanted to be able to add a method to this called “ToInstanceString” that I would use to both display your Status, and to detect when it had changed.
In VB.NET you add Extension methods to a Module. One thing worth noting is that you can control the scope of the extension method with the Namespace. If you add a namespace of “MyApp.Mynamespace” your method will only be available within that namespace and not at the “MyApp” level.
1Public Module XboxExtensions 2 3 <System.Runtime.CompilerServices.Extension()> _ 4 Friend Function ToPresenceString(ByVal Value As DMXIProxy.XboxInfo) As String 5 If Value.PresenceInfo.Info = "" Then 6 Return "" 7 ElseIf Value.PresenceInfo.Info2 = "" Then 8 Return Value.PresenceInfo.Info 9 Else 10 Return String.Format("{0} ({1})", Value.PresenceInfo.Info, Value.PresenceInfo.Info2) 11 End If 12 End Function 13 14End Module
You need to annotate the method with the “System.Runtime.CompilerServices.Extension()” attribute, and make sure that the first parameter of the method is the type that you want to extend…
You can add extension methods randomly within your code, but it makes sense to put them all together in categorised module for future use. Although this one is specific to this application, you can probably see many circumstances where you could create generic and useful methods to add to things like collections and the like…
Have fun…
Technorati Tags: .NET
No related videos found.
If you've made it this far, it's worth connecting with our principal consultant and coach, Martin Hinshelwood, for a 30-minute 'ask me anything' call.
We partner with businesses across diverse industries, including finance, insurance, healthcare, pharmaceuticals, technology, engineering, transportation, hospitality, entertainment, legal, government, and military sectors.
CR2
Schlumberger
Boxit Document Solutions
Genus Breeding Ltd
Capita Secure Information Solutions Ltd
Flowmaster (a Mentor Graphics Company)
ProgramUtvikling
Sage
Lockheed Martin
Kongsberg Maritime
Trayport
Milliman
New Signature
Akaditi
Epic Games
Big Data for Humans
Alignment Healthcare
Bistech
Washington Department of Transport
Department of Work and Pensions (UK)
Washington Department of Enterprise Services
New Hampshire Supreme Court
Ghana Police Service
Royal Air Force
Emerson Process Management
SuperControl
Higher Education Statistics Agency
Philips
Slaughter and May
Slicedbread