WSE 3.0 웹 서비스에 알려지지 않은 파생 유형
-
20-09-2019 - |
문제
WSE 3.0 기반 웹 서비스와 해당 서비스의 참조에 정의 된 유형을 사용하는 Winforms 클라이언트 응용 프로그램이 있지만 클라이언트가 요구하는 추가 기능을 제공하기 위해 하위 클래스를 제공합니다.
그러나 서브 클래스의 인스턴스를 웹 서비스로 다시 전달하면 원래 유형으로 명시 적으로 캐스트 되더라도 두려운 다음을 알 수 있습니다.
xmlinclude 또는 soapinclude 속성을 사용하여 정적으로 알려지지 않은 유형을 지정하십시오.
내 파생 유형과 관련하여.
코드 요약 :
public class DefinedInReferenceCs
{
// ...
}
public class ClientSubclass : DefinedInReferenceCs
{
// My extra stuff
}
public class MyClient
{
public CallTheWebService(ClientSubclass obj)
{
// obj is an instance of ClientSubclass, cast as DefinedInReferenceCs
svc.MyMethod((DefinedInReferenceCs)obj);
// Throws an exception complaining that ClientSubclass is not statically known
}
}
정의 된 referencecs 인스턴스를 명시 적으로 만들고 관련 필드의 깊은 사본을 수행 함으로써이 문제를 해결할 수 있습니다. 더 좋은 방법이 있습니까?
해결책
XML 시리얼 라이저는 반사를 사용하여 객체와 함께 작동하므로 기본 클래스 참조가 파생 클래스의 인스턴스를 참조하는 것을 볼 수있는 방법이 없습니다. 예, 사용해야합니다 XmlInclude
.
OTOH, 원래 프록시 클래스에 기능을 추가하기 위해 부분 클래스를 사용하여 고려 했습니까? 그렇게하면 파생 클래스가 필요하지 않습니다.
제휴하지 않습니다 StackOverflow