当前位置:  开发笔记 > 开发工具 > 正文

IEnumerable.GetEnumerator()在Delphi 6中返回IEnumVariant

如何解决《IEnumerable.GetEnumerator()在Delphi6中返回IEnumVariant》经验,为你挑选了1个好方法。

我通过COM在Delphi 6中使用.Net2.0程序集.其中一个接口中的一个方法返回IEnumerable.只要我导入位于的mscorlib.tlb

"C:\ WINDOWS\Microsoft.NET \框架\ V2.0.50727"

,我可以在Delphi 6中同时访问IEnumerable和IEnumerator接口.以下是在mscorlib_TLB.pas中定义IEnumerable的部分:

// *********************************************************************//
// Interface: IEnumerable
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {496B0ABE-CDEE-11D3-88E8-00902754C43A}
// *********************************************************************//
  IEnumerable = interface(IDispatch)
    ['{496B0ABE-CDEE-11D3-88E8-00902754C43A}']
    function GetEnumerator: IEnumVARIANT; safecall;
  end;

GetEnumerator方法的返回值不是IEnumerator,当我尝试将其强制转换为IEnumerator时,"不支持接口"会抛出异常.

以前有人遇到过这个或类似的问题吗?怎么解决?



1> casperOne..:

这是通过COM interop与.NET对象交互时的标准行为,如下所示:

http://msdn.microsoft.com/en-us/library/111chfb8(VS.71).aspx

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有