Hoffentlich ist dies für SO nicht allzu unklar, aber beachte die folgende P / Invoke-Signatur:
%Vor%Ich möchte diese Signatur folgendermaßen neu entwerfen, um SafeHandles zu verwenden:
%Vor%laut MSDN Das Argument InputHandle muss ein Nullzeiger sein, wenn das HandleType-Argument SQL_HANDLE_ENV und andernfalls ein Nicht-Null-Zeiger ist.
Wie erfasse ich diese Semantik in einer einzigen P / Invoke-Signatur? Bitte fügen Sie eine Beispiel-Call-Site in Ihre Antwort ein. Meine derzeitige Lösung besteht darin, zwei Signaturen zu verwenden.
Die Antwort von shf301 übergibt null
für das Eingabeargument InputHandle
. Dies funktioniert bei den meisten APIs nicht (vielleicht tut es das für das spezifische Problem des OP, da sie die Antwort akzeptiert haben).
Ich benutze dieses Muster:
%Vor%Es bedeutet, dass ich dies tun kann, um ein Null-Handle zu übergeben:
%Vor% Es ist ähnlich wie ein IntPtr.Zero
statischer Member.