¿La clase NativeMethods se maneja especialmente en .NET?
-
22-07-2019 - |
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
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.