Pergunta

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

são as três classes descritas neste paginada tratados de forma especial no .NET Framework? (NativeMethods, SafeNativeMethods e UnsafeNativeMethods)

A razão que eu estou pedindo é que eu estou querendo saber se é certo para criar categorias de aulas NativeMethods. Por exemplo:

ComNativeMethods
User32NativeMethods
OleStorageNativeMethods
Foi útil?

Solução

É uma convenção, não uma exigência. Se você refletir na CLR e vejam o código lá, muitas vezes você vai ver o código P / Invoke dentro de uma classe NativeMethods. Acredito que FxCop vai recomendo colocar o seu código P / Invoke em uma classe como este se encontra-lo.

Outras dicas

É apenas uma convenção que diz que você deve colocar p / chamar métodos em classes chamadas NativeMethods *, mas não há nenhuma restrição técnica para impedi-lo de fazer o seu próprio caminho ...

Você pode nomear suas classes dessa maneira, mas você vai continuar a receber o CA1060 aviso de análise de código. Este aviso indica que você não está seguindo a convenção. Então, para evitar este aviso, você precisa seguir a convenção ao nomear as classes que possuem métodos P / Invoke. Se você quer categorizar seus métodos P / Invoke, você pode usar namespaces. Por exemplo:

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

Eles não são tratados de forma especial pelo CLR. É simplesmente uma prática recomendada para ter o seu P / Invoca dentro de uma classe NativeMethods nomeados, SafeNativeMethods, ou UnsafeNativeMethods.

Você verá esta recomendação entrar em jogo, se você executar FxCop em suas montagens.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top