我通过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时,"不支持接口"会抛出异常.
以前有人遇到过这个或类似的问题吗?怎么解决?
这是通过COM interop与.NET对象交互时的标准行为,如下所示:
http://msdn.microsoft.com/en-us/library/111chfb8(VS.71).aspx