Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在.NET';IDataObject.SetData()的s版本?_.net_Com - Fatal编程技术网

如何在.NET';IDataObject.SetData()的s版本?

如何在.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

“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
);
  • 为什么.NET版本设计为返回“void”而不是返回值
  • 如果我想在.NET中返回像
    E_INVALIDARG
    这样的值,我该怎么做

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