Pregunta

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

¿Las tres clases descritas en este paginado se manejan especialmente en .NET Framework? (NativeMethods, SafeNativeMethods y UnsafeNativeMethods)

La razón por la que pregunto es porque me pregunto si está bien crear categorías de clases NativeMethods. Por ejemplo:

ComNativeMethods
User32NativeMethods
OleStorageNativeMethods
¿Fue útil?

Solución

Es una convención, no un requisito. Si reflexiona en el CLR y observa el código allí, a menudo verá el código P / Invoke dentro de una clase NativeMethods. Creo que FxCop recomendará poner su código P / Invoke en una clase como esta si lo encuentra.

Otros consejos

Es solo una convención que dice que debe colocar los métodos p / invoke en clases llamadas * NativeMethods, pero no existe una restricción técnica que le impida hacerlo a su manera ...

Puede nombrar sus clases de esa manera, pero continuará recibiendo la advertencia de análisis de código CA1060. Esta advertencia indica que no está siguiendo la convención. Por lo tanto, para evitar esta advertencia, debe seguir la convención al nombrar clases que tengan métodos P / Invoke. Si desea clasificar sus métodos P / Invoke, puede usar espacios de nombres. Por ejemplo:

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

No son manejados especialmente por el CLR. Simplemente es una práctica recomendada tener sus P / Invocaciones dentro de una clase llamada NativeMethods, SafeNativeMethods o UnsafeNativeMethods.

Verá que esta recomendación entra en juego si ejecuta FxCop en sus ensamblajes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top