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

发布于 2024-07-15 23:17:04 字数 826 浏览 7 评论 0 原文

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

"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727"

中的 mscorlib.tlb ,我就可以到达 Delphi 6 中的 IEnumerable 和 IEnumerator 接口。这是在 mscorlib_TLB 中定义 IEnumerable 的部分。 pas:

// *********************************************************************//
// 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 时,会抛出“接口不支持”异常。

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

I am using a .Net2.0 Assembly in Delphi 6 via COM.
One of the methods in one of the interfaces returns IEnumerable.
As long as I import mscorlib.tlb located in

"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727"

, I can reach both IEnumerable and IEnumerator interfaces in Delphi 6. Here is the part where IEnumerable is defined in mscorlib_TLB.pas:

// *********************************************************************//
// 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;

The return value of the GetEnumerator method is not IEnumerator and when I try to cast it to IEnumerator 'Interface not supported' exception is thrown.

Has anyone encountered this or a similar problem before? How can it be resolved?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤独岁月 2024-07-22 23:17:04

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

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

This is standard behavior when interacting with .NET objects through COM interop, as specified here:

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

¢蛋碎的人ぎ生 2024-07-22 23:17:04

MSDN 对 IEnumVARIANT 解释的链接也可能很有价值: http://msdn .microsoft.com/en-us/library/ms221053.aspx

A link to MSDN's explanation of the IEnumVARIANT may also be valuable: http://msdn.microsoft.com/en-us/library/ms221053.aspx

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文