Frage

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

Sind die drei Klassen auf diese beschrieben PagEd speziell in .NET Framework behandelt? (Native, SafeNativeMethods und UnsafeNativeMethods)

Der Grund, warum ich gefragt habe ist, ich frage mich, ob es in Ordnung ist Kategorien von Native Klassen zu erstellen. Zum Beispiel:

ComNativeMethods
User32NativeMethods
OleStorageNativeMethods
War es hilfreich?

Lösung

Es ist eine Konvention, keine Anforderung. Wenn Sie in die CLR reflektieren und dort einen Blick auf Code nehmen, werden Sie oft sehen P / Invoke-Code innerhalb einer Klasse Native. Ich glaube, dass FxCop empfehlen Ihre P / Invoke-Code in einer Klasse wie folgt setzen, wenn sie es trifft.

Andere Tipps

Es ist nur eine Konvention, die sagt, Sie p / aufrufen Methoden in Klassen namens * Native legen sollte, aber es gibt keine technische Einschränkung Sie verhindern, dass es seinen eigenen Weg zu tun ...

Sie können Ihre Klassen so nennen, aber Sie werden auch weiterhin die Code-Analyse-Warnung CA1060 erhalten. Diese Warnung zeigt Ihnen die Konvention nicht folgen. Also diese Warnung zu vermeiden, müssen Sie die Konvention folgen, wenn Klassen zu benennen, die P / Invoke Methoden. Wenn Sie Ihre P / Invoke Methoden kategorisieren möchten, können Sie Namespaces verwenden. Zum Beispiel:

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

Sie sind nicht speziell von der CLR behandelt. Es ist einfach die Praxis empfohlen, Ihre P / Invokes innerhalb einer Klasse namens Native, SafeNativeMethods zu haben oder UnsafeNativeMethods.

Sie finden diese Empfehlung ins Spiel kommen sehen, wenn Sie FxCop auf Ihren Baugruppen ausgeführt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top