Domanda

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

Le tre classi descritte in questo paging sono gestite appositamente in .NET Framework? (NativeMethods, SafeNativeMethods e UnsafeNativeMethods)

Il motivo che sto chiedendo è che mi chiedo se sia giusto creare categorie di classi NativeMethods. Ad esempio:

ComNativeMethods
User32NativeMethods
OleStorageNativeMethods
È stato utile?

Soluzione

È una convenzione, non un requisito. Se rifletti nel CLR e dai un'occhiata al codice lì dentro, vedrai spesso il codice P / Invoke all'interno di una classe NativeMethods. Credo che FxCop raccomanderà di inserire il codice P / Invoke in una classe come questa se lo incontra.

Altri suggerimenti

È solo una convenzione che dice che dovresti inserire i metodi p / invoke nelle classi denominate * NativeMethods, ma non ci sono vincoli tecnici che ti impediscono di farlo a modo tuo ...

Puoi assegnare un nome alle tue classi in questo modo, ma continuerai a ricevere l'avviso di analisi del codice CA1060. Questo avviso indica che non stai seguendo la convenzione. Quindi, per evitare questo avviso, è necessario seguire la convenzione quando si nominano le classi che hanno metodi P / Invoke. Se vuoi categorizzare i tuoi metodi P / Invoke, puoi usare gli spazi dei nomi. Ad esempio:

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

Non sono gestiti appositamente dal CLR. Si consiglia semplicemente di inserire P / Invokes in una classe denominata NativeMethods, SafeNativeMethods o UnsafeNativeMethods.

Vedrai questa raccomandazione entrare in gioco se esegui FxCop sui tuoi assembly.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top