Question

https://msdn.microsoft.com /en-us/library/ms182161.aspx

Les trois classes décrites sur cette page sont-elles gérées spécialement dans le .NET Framework? (NativeMethods, SafeNativeMethods et UnsafeNativeMethods)

La raison pour laquelle je pose la question, c'est que je me demande s'il est correct de créer des catégories de classes NativeMethods. Par exemple:

ComNativeMethods
User32NativeMethods
OleStorageNativeMethods
Était-ce utile?

La solution

C'est une convention, pas une exigence. Si vous réfléchissez dans le CLR et jetez un coup d'oeil au code qu'il contient, vous verrez souvent du code P / Invoke dans une classe NativeMethods. Je pense que FxCop recommandera de mettre votre code P / Invoke dans une classe comme celle-ci s’il le rencontre.

Autres conseils

C’est juste une convention selon laquelle vous devez placer des méthodes p / invoke dans des classes nommées * NativeMethods, mais aucune contrainte technique ne vous empêche de le faire à votre façon ...

Vous pouvez nommer vos classes de cette façon, mais vous continuerez à recevoir l'avertissement d'analyse de code CA1060. Cet avertissement indique que vous ne suivez pas la convention. Donc, pour éviter cet avertissement, vous devez suivre la convention lorsque vous nommez des classes qui ont des méthodes P / Invoke. Si vous souhaitez classer vos méthodes P / Invoke, vous pouvez utiliser des espaces de noms. Par exemple:

  • MyProject.Com.NativeMethods
  • MyProject.User32.NativeMethods
  • MyProject.OleStorage.NativeMethods

Ils ne sont pas spécialement gérés par le CLR. Il est simplement recommandé de placer votre P / Invokes dans une classe nommée NativeMethods, SafeNativeMethods ou UnsafeNativeMethods.

Vous verrez cette recommandation entrer en jeu si vous exécutez FxCop sur vos assemblys.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top