2009-06-11 3 views
2

복합 형 (myComplexResult)을 반환하는 WCF 서비스에 메서드가 있습니다.이 중 하나의 멤버로 List (Of Common.myBaseClass)가 포함되어 있습니다. 이 목록에는 Common.myBaseClass를 상속 한 Foo.myClass1 및 Bar.myClass2 유형의 다양한 항목을 보유하고 싶습니다. 이러한 클래스는 모두 다른 어셈블리에 정의되어 있습니다.다른 어셈블리의 데이터 계약에 대해 알려진 유형 선언

유형 'Foo.myClass1' 데이터 계약 이름 'myClass1 : http://mynamespace/foo/은' 는 예상되지 않는다

서비스는이 예외가 발생합니다. 이 아닌 알려진 형식을 알려진 형식 목록에 정적으로 추가하십시오. 예를 들어 KnownTypeAttribute 특성을 사용하거나 에 의해 알려진 형식 목록에 추가하면 DataContractSerializer로 전달됩니다.

좋아, 내가 DataContractSerializer가 알고있는 그들과 함께 무엇을 할 수 있도록 내가 myBaseClass의 알려진 유형으로 myClass1 및 MyClass2의를 선언 할 필요가 있음을 알고 있습니다. 나는 명백한 일을 할 수없고 myClass1과 myClass2에 대한 KnownType 속성으로 myBaseClass 클래스를 꾸밀 수 없다. 이는 원형 종속성을 발생시키는 Foo 및 Bar 어셈블리에 대한 참조를 추가한다는 것을 의미하기 때문이다.

은 내 config 파일에서 declaredTypes을 사용하는 기대했다 나는 노력이 :

<DataContract(name:="myComplexResult", [namespace]:="http://mynamespace/coo/")> _ 
    <KnownType(GetType(Foo.myClass1))> _ 
    Public Class myComplexResult 
     <DataMember(name:="myList")> _ 
     Public myList As List(Of Common.myBaseClass) 
: 수 있도록하는 것, 그래서 myComplexResult에 KnownType 속성을 추가하려하지 않았다

<system.runtime.serialization > 
    <dataContractSerializer > 
     <declaredTypes > 
      <add type ="Common.myBaseClass, Common"> 
       <knownType type ="Foo.myClass1, Foo" /> 
       <knownType type ="Bar.myClass2, Bar" /> 
      </add> 
     </declaredTypes> 
    </dataContractSerializer> 
</system.runtime.serialization> 

하지만 여전히 같은 오류가 발생합니다. 도움! 나는 무엇을해야합니까?

답변

3

내 잘못입니다. 내가 다시 시도하고 위에 게시 된 두 솔루션 실제로 작동하지. 나는 이것이 테스트를 실행하기 전에 내 테스트 프로젝트에서 서비스 레퍼런스를 업데이트하지 않는 경우라고 생각한다.

관련 문제