문제

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, 원래 프록시 클래스에 기능을 추가하기 위해 부분 클래스를 사용하여 고려 했습니까? 그렇게하면 파생 클래스가 필요하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top