使用在类正在实现的泛型接口中的泛型类中声明的嵌套类型



我有一个通用的类似列表的类tMyList<B>,该方法带有方法 Each(),该方法遍历每个元素并使用参数调用匿名过程tMyList<A>.enumProc - 类型 <B> 的当前项目。我想将该类实现为接口,以便更轻松地进行生存期管理。

问题是我无法在iMyList<A>接口中声明 Each 方法,因为tMyList<A>.enumProc类型未知。据我所知,接口不支持嵌套类型?

这是代码:

  tMyList<B> = class;
  iMyList<A> = interface
    procedure each(enumProcedure: iMyList<A>.enumProc); // ERROR - Undeclared identifier: 'enumProc'
  end;
  tMyList<B> = class(tInterfacedObject, iMyList<B>)
    type
      enumProc = reference to procedure(item: iMyList<B>);
    public
      procedure each(enumProcedure: enumProc);
  end;

* 在这种特殊情况下,实现枚举器不是一个选项

完成此操作的唯一方法是在实现类之外定义过程类型。喜欢这个:

type
  IMyIntf<A> = interface;
  TMyProc<A> = reference to procedure(Intf: IMyIntf<A>);
  IMyIntf<A> = interface
    procedure Foo(Proc: TMyProc<A>);
  end;
  TMyClass<A> = class(TInterfacedObject, IMyIntf<A>)
    procedure Foo(Proc: TMyProc<A>);
  end;

相关内容

  • 没有找到相关文章

最新更新