问题:
PreserveSig属性能否应用于外部定义的非静态函数?例如,我们可以用PreserveSig=true标记以下方法:
https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.excel.range.specialcells?view=excel-pia
研究
Microsoft文档概述了PreserveSig属性的用法,用于控制作为HRESULT返回的错误类型是按原样返回还是转换为异常。但所有在线示例均适用于静态方法,例如,请参见:
https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.dllimportattribute.preservesig?view=netframework-4.8
最后,如果我们是定义COM互操作库的人,那么我们似乎可以通过使用PreserveSig标记方法来轻松地告诉方法不要将错误转换为异常,例如,请参见:
https://blogs.msdn.microsoft.com/adam_nathan/2003/04/30/preservesig/
相关的
.NET C#: Is it possible to import TLB (semi-)automatically and add PreserveSig to one type?
我正在使用互操作库Microsoft.Office.interop.Excel循环浏览工作簿中的每个工作表,并使用每个工作表的UsedRange上的Range.SpecialCells函数检查错误。我访问所有互操作对象,首先单击功能区上的按钮,然后拉出应用程序对象:
Window window = e.Control.Context;
return window.Application;