如何在.NET';IDataObject.SetData()的s版本?
“System.Runtime.InteropServices.ComTypes.IDataObject”已被删除如何在.NET';IDataObject.SetData()的s版本?,.net,com,.net,Com,“System.Runtime.InteropServices.ComTypes.IDataObject”已被删除 public void SetData (ref FORMATETC formatIn, ref STGMEDIUM medium, bool release); ,但Objidl.h中的IDataObject HRESULT SetData( FORMATETC *pformatetc, STGMEDIUM *pmedium, BOOL fRelease
public void SetData (ref FORMATETC formatIn, ref STGMEDIUM medium, bool release);
,但Objidl.h
中的IDataObject
HRESULT SetData(
FORMATETC *pformatetc,
STGMEDIUM *pmedium,
BOOL fRelease
);
E_INVALIDARG
这样的值,我该怎么做这些COM函数会自动转换,失败的HRESULT会生成相应的.NET异常。如果您需要该值,但不希望出现异常,则必须使用[PreserveSig]属性和返回类型int声明该方法。例如,在Winforms中,由于异常很有用,所以不抑制异常,而是在拖放代码中尝试/catch em all。也就是说,我不能使用
System.Runtime.InteropServices.ComTypes.IDataObject
,但我必须自己使用PreserveSig
声明一个版本,对吗?这几乎就是你最近所有问题的答案,从现有的.NETCore源代码复制/粘贴,并且只有在绝对必要时才进行更改。在这里你不必这样做,这些例外情况是有帮助的,但是如果你不解释为什么你需要这样做,你就无法得到正确的帮助。