Я не в первый раз пытаюсь наследоваться от класса и преобразовывать в него объект, в этом случае расширять функциональные возможности HTTP_CLIENT_RESPONSE
с помощью valid_http_response => response.status = 200
, valid_http_json_body => validate json content
и т. д.
Для этого я хотел бы унаследовать от HTTP_CLIENT_RESPONSE
и добавить функции и создать свой собственный DB_ENTITY_HTTP_CLIENT_RESPONSE
из HTTP_CLIENT_RESPONSE
test_case
local
l_http_client_r: HTTP_CLIENT_RESPONSE
l_db_entity_http_client_r: DB_ENTITY_HTTP_CLIENT_RESPONSE
do
l_http_client_r := execute_get("someURL") -- returns an HTTP_CLIENT_RESPONSE
l_db_entity_http_client_r := l_http_client_r
assert("valid response", l_db_entity_http_client_r.valid_response)
end
кажется, у меня возникли трудности с установкой внутренних свойств... как лучше всего это сделать? У меня был такой же случай, когда я пытался создать класс WATT, наследующий от NATURAL_32, который является расширенным.
В моей стратегии я пытался вызвать создателя
- процедура создания родителя
- затем позвоните в
deep_copy
Вот остальная часть моей попытки класса:
class
DB_ENTITY_HTTP_CLIENT_RESPONSE
inherit
HTTP_CLIENT_RESPONSE
create
make_from_http_client_response
convert
make_from_http_client_response ({HTTP_CLIENT_RESPONSE})
feature -- Initialization
make_from_http_client_response (a_client_response: HTTP_CLIENT_RESPONSE)
do
make (a_client_response.url)
deep_copy (a_client_response)
end
feature -- Status report
valid_response: BOOLEAN
do
Result := status = 200
end
Единственный способ, которым я нашел работу на данный момент, - это установить все атрибуты на другие, что обычно является семантикой deep_copy
...
make_from_http_client_response (a_client_response: HTTP_CLIENT_RESPONSE)
do
make (a_client_response.url)
set_body (a_client_response.body)
set_http_version (a_client_response.http_version)
set_error_occurred (a_client_response.error_occurred)
set_error_message (a_client_response.error_message)
set_raw_header (a_client_response.raw_header)
set_status_line (a_client_response.status_line)
... I surely forgot something...
end