Обрабатывается ли класс NativeMethods специально в .NET?

StackOverflow https://stackoverflow.com/questions/1445117

Вопрос

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

Обрабатываются ли три класса, описанные на этой странице, специально в .NET Framework?(nativemethod, safenativemethod и unsafenativemethod)

Причина, по которой я спрашиваю, заключается в том, что мне интересно, можно ли создавать категории классов NativeMethods.Например:

ComNativeMethods
User32NativeMethods
OleStorageNativeMethods
Это было полезно?

Решение

Это соглашение, а не требование. Если вы поразмышляете над CLR и посмотрите на код, вы часто будете видеть код P / Invoke внутри класса NativeMethods. Я полагаю, что FxCop порекомендует поместить ваш код P / Invoke в подобный класс, если он его встретит.

Другие советы

Это просто соглашение, согласно которому вы должны помещать методы p / invoke в классы с именем * NativeMethods, но нет технических ограничений, которые не позволяют вам делать это по-своему ...

Вы можете называть свои классы таким образом, но вы по-прежнему будете получать предупреждение CA1060 об анализе кода.Это предупреждение указывает на то, что вы не соблюдаете соглашение.Таким образом, чтобы предотвратить это предупреждение, вам необходимо следовать соглашению при именовании классов, у которых есть методы P / Invoke.Если вы хотите классифицировать свои методы P / Invoke, вы можете использовать пространства имен.Например:

  • Методы MyProject.Com.NativeMethods
  • MyProject.User32.Собственные методы
  • MyProject.OleStorage.Собственные методы

Они не обрабатываются специально CLR. Просто рекомендуется практиковать, чтобы ваши P / Вызывались внутри класса с именами NativeMethods, SafeNativeMethods или UnsafeNativeMethods.

Эта рекомендация вступит в силу, если вы запустите FxCop на своих сборках.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top