А не переопределяй классы. переопредели поведение.
Я не в курсе, как у тебя все устроено, но к примеру.
public double AircraftObserver.GetIAS(IMeasureConverter converter)
где AircraftObserver твой класс, который следит за самолетом.
GetIAS метод, возвращающий IAS
IMeasureConverter интерфейс, ответственный за перевод значений из одной системы в другую. Содержит набор методов для перевода м/с в что-то еще, метры в что-то еще и т.п. AircraftObserver получает сырые данные и переводит их в требуемый формат, используя класс с этим интерфейсом.
Можно класс этот к примеру вообще в конструкторе передавать.
Юзер к примеру может сам выбрать, в какой системе ему данные возвращать. Тогда скажем класс UserDefinitions будет в одном из свойств содержать конкретную, нужную именно этому юзеру реализацию IMeasureConverter. Оттуда ее берем и передаем в методе GetIAS и остальных.
Т.е. у тебя будет набор "переводчиков" IMeasureConverter на все случаи жизни, подставляй нужный.