Вы, вероятно, должны создать свой собственный класс, который оборачивает массив.Вы не хотите переопределять базовый класс обратным вызовом, как вы описываете, это не только делает код хрупким, но и становится менее выразительным для будущих разработчиков, которые могут не ожидать, что Array сделает обратный вызов.