Взломать карту модуля, чтобы выставить fileprivate конструкции?
Я реализую свой собственный JSON-кодер / декодер, как у Swift Encoder
& Decoder
протоколы.
Дело в том, что я хочу переопределить только небольшое подмножество функций, уже предоставленных JSONEncoder
в основании. JSONEncoder
вопреки своему названию не является настоящим Свифтом Encoder
, Вместо этого он оборачивает класс fileprivate _JSONEncoder
, который реализует все необходимое Encoder
функции.
Чтобы написать свой собственный кодировщик, я мог бы:
- Напишите мой собственный кодер JSON с нуля.
- Скопируйте и вставьте и измените
_JSONEncoder
из самого источника.
Ни один не является особенно привлекательным решением. Написание собственного кодировщика - трудная и сложная задача, и я не сомневаюсь, что она будет изобиловать ошибками. Прописи склеивание _JSONEncoder
с другой стороны, вынуждает меня неуклюже проверять и исправлять порты каждый раз, когда происходит обновление исходного исходного файла.
Я бы предпочел просто иметь _JSONEncoder
разоблачить и обернуть Encoder
связанных функций при внедрении моего собственного кода по мере необходимости.