오늘 호기심에 의한 사건이 발생하여 델파이의 객체 모델이 실제로 어떻게 작동하는지 생각하게되었습니다.동일한 클래스가 두 개의 별도 라이브러리에서 호환되지 않습니까?
사건 : 우리는 매개 변수로 객체를 복용 방법 중 몇 가지를 노출하여 SOAP 서비스를 가져온
. 델파이는 SOAP 서비스와 통신하기 위해 사용하는 클래스/인터페이스를 생성하고, 매개 변수로 사용되는 객체는 모두 TRemotable에서 상속합니다.
다른 이유로 우리는 soap 서비스와의 모든 통신을 dll에 넣었습니다.
그런 다음 주 실행 파일에서 보내야하는 객체를 인스턴스화하고 직렬화 및 전송을 위해이를 라이브러리로 전달하려고했습니다.
이제는 작동하지 않았지만 예상치 못한 예외가있었습니다.
우리가 비누 서비스에 보내려고하는 대상은 TRemotable에서 상속해야한다고 말했지만 실제로는 그렇습니다. 객체를 검사하면 클래스가 wsdl에서 가져온 클래스이고 부모 클래스가 참으로 TRemotable임을 알 수 있습니다.
패키지로 빌드하면이 문제가 해결됩니다.
질문 : 두 라이브러리 사이에 공유 소스 파일에 정의 된 클래스는 런타임에 서로 다른 클래스를 끝나도록
가 있습니까? 그렇다면 그 이유는 무엇입니까?
내가 아는 한, 라이브러리간에 객체를 전달하는 것이 좋습니다. 그렇다면 강력한 타이핑이 어떻게 보장되고, 객체 인스턴스가 어느 정도 서로 호환 될 수 있을까요?
확인. 이것은 제가 추측 한 것에 대한 확인입니다. 사실, 우리가 더 나은 디자인을 강요하기 때문에 나는 이것을 좋아합니다 ... – Vegar