2012-07-27 4 views
0

소수의 웹 서비스를 참조하는 Silverlight 프로젝트가 있습니다. 각 웹 서비스 메서드는 GenericWebResponse이라는 표준 응답 래퍼 객체를 반환합니다. 이 클래스에는 호출이 성공했는지 여부에 대한 정보와 실패 이유를 나타내는 데 실패한 경우의 상태 코드가 포함됩니다. 일반적으로 인증 티켓이 만료되었거나 사용자가 작업을 수행 할 수있는 권한이 없다는 것입니다.모든 서비스 참조 반환 유형을 동일하게 처리하는 방법

어쨌든 웹 서비스 호출이 실패 할 때마다 나는 같은 방식으로 처리하려고합니다. 로그 항목을 만들고 사용자에게 무언가가 잘못되었음을 알리고 싶습니다.

여러 서비스가 있으므로 각 서비스 참조는 동일한 GenericWebResponse 클래스의 새 인스턴스를 생성합니다. 그래서 나는 ProductService.GenericWebResponseOrderService.GenericWebResponse을 가지고 있으며 분명히 .NET은 그것들을 완전히 별개의 클래스로 취급합니다.

나는이 객체들에 대해 일반적으로 코드를 작성하고 싶다. 나는 응답이 항상 같을 것이라는 것을 안다.하지만 .NET은 그것을 모른다. 알 겠어. 그러나이 객체에 대한 코드를 작성할 수있는 방법이 있습니까? 그렇기 때문에 제가 가진 각 서비스에 대한 내 오류 로깅 코드의 새 버전을 작성할 필요가 없습니까?

답변

1

정의한 공용 인터페이스를 구현하는 각 프록시 생성 응답 유형에 부분 클래스를 생성 할 수 있으며 구현시 구체적인 프록시 생성 유형으로 전달할 수 있습니다. T4를 사용하면 수동으로 수행하는 대신 자동 생성되도록하는 방법이있을 수 있습니다.

서비스를 정의하고 인터페이스 유형에 액세스 할 수 있다면 다른 방식으로 프록시를 생성 할 수 있습니다. 동적 프록시 또는 자체 T4 템플릿을 사용할 수 있습니다.

http://intellecting.net/blog/post/Using-T4-To-Generate-WCF-Client-Proxy.aspx

http://wcfdynamicclient.codeplex.com/

과거에 DynamicProxy을 사용해 본 적이 ... 2 장점이 있습니다 ....는 채널 오류가 프록시를 더 이상 사용할 수 없을 때의 하찮은 일로 괴로워을 해결 .. .. 그리고 또한 귀하의 서비스 인터페이스가 유동적/진화 중일 때 개발 중 .... 서비스 참조를 매번 업데이트 할 필요가 없습니다 .... 서비스의 C# 인터페이스를 사용하면 짓다.

0

필드가 정확히 같으면 리플렉션을 사용하여 속성 값을 추출해야합니다.

0

서비스가 .NET 서비스 인 경우 "서비스 참조 추가"를 사용할 때 "고급"을 클릭하고 "재사용 유형"을 선택할 수 있습니다. 원래 형식을 포함하는 프로젝트를 참조해야하지만 각 참조에 대해 실제 형식을 사용해야합니다.