Как вызвать исходный код класса, когда помощник класса находится в области видимости?
Я провожу модульное тестирование на улучшенной версии быстрой сортировки.
(Надеемся) более быстрая версия реализована с использованием:
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;
....
Я знаю, сейчас я могу просто переименовать Sort
в SortNew
для целей тестирования, но в какой-то момент я должен исправить имена методов на sort
,
Если в области видимости есть помощник класса, как я могу вызвать оригинальные методы?
Есть ли способ, используя RTI или какой-то другой окольный метод?
1 ответ
Решение
Я думаю, что единственный способ достичь этого с помощью чистого кода 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.