Ich habe drei Möglichkeiten gefunden:
Verwenden Sie die Klasse System.Runtime.InteropServices.ExternalException
und geben Sie den Fehler ein Code als Parameter:
Danke @HansPassant für seinen Kommentar, der das erklärt.
Übergeben Sie eine Scheinausnahme unter Verwendung der Vererbung, um auf ein geschütztes Feld zuzugreifen:
%Vor%Verwenden Sie .NET Reflection, um das zugrunde liegende Feld festzulegen:
%Vor% Das Übergeben einer dieser Ausnahmen an die Methode in der Frage führt dazu, dass diese Methode true
zurückgibt. Ich vermute, dass die erste Methode am nützlichsten ist.
Ich finde es nützlich, eine Erweiterung dafür zu erstellen.
%Vor%Dann werfen Sie die Ausnahme:
%Vor%Tags und Links c# testing exception marshalling hresult