2

我正在对改进的快速排序版本进行一些单元测试。
(希望)更快的版本是通过以下方式实现的:

TArrayHelper = class helper for System.Generics.Collections.TArray
....
   class procedure Sort<T>(var Values: array of T); overload; static;
   class procedure Sort<T>(var Values: array of T; Comparer: IComparer<T>); overload; static;
....

我知道现在我可以将其重命名为SortintoSortNew以进行测试,但在某些时候我必须将方法名称修复为sort.

如果范围内有类助手,我如何调用原始方法?

有没有使用 rtti 或其他迂回方法的方法?

4

1 回答 1

2

我认为使用纯 Pascal 代码实现此目的的唯一方法是Sort从您的类助手不活动的范围内调用。关键是,如果您的类助手处于活动状态,则Sort指的是助手中的方法。

例如像这样:

unit ScopeBuster;

interface;

uses
  System.Generics.Collections;

type
  TArrayScopeBuster = class
    class procedure Sort<T>(...); overload; inline; static;
  end;

implementation

class procedure TArrayScopeBuster.Sort<T>(...); 
begin
  TArray.Sort(...);
end;

end.
于 2015-06-15T12:20:21.730 回答