IEnumerable.GetEnumerator() 在 Delphi 6 中返回 IEnumVariant
我通过 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 时,会抛出“接口不支持”异常。
以前有人遇到过这个或类似的问题吗? 怎么解决呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是通过 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
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