2010-08-12 8 views
1

WCF 서비스가 있고 공유 어셈블리에서 클라이언트 유형을 공유하고 있습니다. 클라이언트가 파생 클래스를 만드는 경우 리플렉션을 통해 추가 된 속성을 읽을 수 있도록 파생 된 유형을 서비스에 다시 전달할 수 있습니까?클라이언트의 공유 객체 및 파생 클래스가있는 WCF

서비스가 파생 된 형식을 deserialize하는 방법을 모르기 때문에 KnownTypes에 문제가 있습니다.

[Serializable] 
public abstract class Car : ICar 
{........ 

// 클라이언트 :

[Serializable] 
public class MyCar : Car 
{...... 

나는 예외가 knownType에 대해 불평하지만 난 늘 클라이언트가 될 것입니다 알고 있기 때문에 서버에이를 추가하지 못할 수 서비스에 myCar라는 전달 보내기를 통해 리플렉션을 통해 추가 속성을 처리하려고합니다.

런타임시 클라이언트 유형을 유형으로 등록 할 수 있습니까?
해결책일까요? http://blogs.msdn.com/b/sowmy/archive/2006/03/26/561188.aspx

답변

0

이것은 불가능합니다. 서비스와 클라이언트 모두 어떤 유형의 메시지를 보낼지 알고 있어야합니다. 알려진 유형을 사용하려면 해당 서비스의 상위 유형과의 관계를 정의해야합니다.

왜 서버에 추가 된 속성을 알아야합니까?

+0

나는 기본적으로 클라이언트를 필요로하는 웹 검색 ExtensionData 수 있도록하는 방법에

Public void GenericMethod(GenericRQ RQ) { // the serializer adds automatically in RQ.ExtensionData everything that has come and that does not match the class GenericRQ. } 

에서이 상황

//Server public class GenericRQ { public string GenericProperty {get;set;} } public Service GenericService { Public void GenericMethod(GenericRQ RQ) { } } // client Public class MoreSpecificRQ : GenericRQ { public string SpecificProperty {get;set;} } 

에 (UI 용) 속성을 추가하여 기본 클래스를 확장 할 수 있습니다. 그런 다음 서비스가 클래스를 반영하고 이러한 추가 속성을 가져 와서 데이터베이스에 저장합니다. Client가 GetCar (id)를 호출하면 서비스는이 속성들을 기본 클래스에 추가하고 다시 전송합니다. 서비스에서 클라이언트 파생 형식을 서비스에 전달 (등록)하여 서비스에서이를 등록하고이를 사용할 수 있습니까 (knowntypes에 추가 + 초기 리플렉션의 db 값 가져 오기) – DeWet

+0

Dictionary 그 추가 속성? 실제로 클라이언트의 추가 속성을위한 방법이 있습니다. 데이터 계약은 IExtensibleDataObject를 구현해야합니다. 이 인터페이스는 다른 시나리오에서 사용하기로되어 있지만 리플렉션을 사용하려는 경우 요구 사항을 달성 할 수 있습니다. 확인 : http://geekswithblogs.net/EltonStoneman/archive/2009/04/03/accessing-extended-data-from-iextensibledataobject.aspx –

+0

사전 은 나의 초기 접근 방식 이었지만 객체를 이 편집 작업에 대한 속성 표는 올바르게 기본 클래스 속성을 가지고 있기 때문에 사용자 정의 질문에 dictionay 속성에 대한 사용자 지정 편집기를 추가해야하는 이유는 무엇입니까? 조사 후 링크를보고 다시 재생합니다. 감사합니다. – DeWet

0

방법이 있다고 생각합니다.

나는 WCF를 배웠을 때 클래스의 직렬화와 일치하지 않는 모든 것을 얻기위한 메커니즘 인 ExtensionData를 만났음을 막연하게 기억합니다. 예를 들어, 경우 ExtensionData을 활성화하고 쉽게

관련 문제