views:

405

answers:

3

http://msdn.microsoft.com/en-us/library/ms182161%28VS.80%29.aspx

Are the three classes described on this paged handled specially in the .NET Framework? (NativeMethods, SafeNativeMethods and UnsafeNativeMethods)

The reason I'm asking is I'm wondering if it is alright to create categories of NativeMethods classes. For example:

ComNativeMethods User32NativeMethods OleStorageNativeMethods

A: 

They aren't handled specially by the CLR. It's simply recommended practice to have your P/Invokes inside a class named NativeMethods, SafeNativeMethods, or UnsafeNativeMethods.

You'll see this recommendation come into play if you run FxCop on your assemblies.

Judah Himango
+1  A: 

It's just a convention that says you should place p/invoke methods in classes named *NativeMethods, but there is no technical constraint to prevent you from doing it your own way...

Thomas Levesque
+2  A: 

It's a convention, not a requirement. If you reflect into the CLR and take a look at code in there, you'll often see P/Invoke code inside a NativeMethods class. I believe that FxCop will recommend putting your P/Invoke code in a class like this if it encounters it.

Pete OHanlon