using ResourceMessageParamsType = System.Array;
Не то, чтобы я притворялся, что понимаю, как этот «код [сериализации] защиты от возможных изменений в определении класса» для вас.
Интерфейсы были бы более чистым подходом, и вы рассматривали дженерики ?
Всеобъемлющие модульные тесты IMO гарантируют, что если кто-то изменит тип псевдонимов, все код десериализации будет работать.