2014-04-15 7 views
1

코드 입력 here .asvc 웹 서비스로 동적 유형을 보내고 싶습니다. 몇 가지 속성이있는 클래스가 하나 있습니다. 이 목록에 어떤 종류의 객체라도 보내고 싶습니다. 그리고 클라이언트 측에서 다시 캐스팅하십시오.웹 서비스에서 객체를 사용할 수 있습니까?

항상 SysResult 유형을 사용하고 싶습니다. 하지만 가끔은 때때로 List<Apple>, List<Orrange>

[Serializable] 
    public class SysResult 
    { 
     public int CRCResult; 
     public long CRCTransactionId; 
     public bool CRCStatus; 
     public string CRCMessage; 
     public List<Anything> ListObject; 
    } 

울부 짖는 소리처럼 나는 object[], Array, List<object>, dynamic 등을 사용하여 시도했다 그러나 나는이 오류를 얻고있다. "기본 연결이 닫혔습니다 : 예기치 않게 연결이 닫혔습니다."

모든 비 특정 객체 유형에 대해 서비스 참조 클래스는 object[] 유형을 나타냅니다.

[System.Runtime.Serialization.DataMemberAttribute(IsRequired=true)] 
     public object[] ListObject { 
      get { 
       return this.ListObjectField; 
      } 
      set { 
       if ((object.ReferenceEquals(this.ListObjectField, value) != true)) { 
        this.ListObjectField = value; 
        this.RaisePropertyChanged("ListObject"); 
       } 
      } 
     } 

동적 유형을 보낼 수있는 방법이 있습니까? 아니면 완전히 잘못된 것을 시도하고 있습니까?

미리 감사드립니다.

답변

1

당신은 알려진 형식을 반환해야합니다. "객체"또는 인터페이스를 반환 할 수 없습니다. wcf는 datacontract가 없으면 클라이언트에서 객체를 직렬화 할 방법을 어떻게 알 수 있습니까? 매개 변수를 전달하고 클라이언트 와 서비스 사이의 값을 반환 할 때

는 일반적으로 두 엔드 포인트는 데이터의 데이터 계약의 모든 전송되는 공유 할 수 있습니다. 그러나 다음 경우에는 해당되지 않습니다.

... 전송할 정보의 선언 된 유형은 Object입니다. 모든 유형은 Object를 상속하며 실제로 전송되는 유형을 에서 알 수 없으므로 수신 끝점에서 은 전송 된 데이터에 대한 데이터 계약을 미리 결정할 수 없습니다.

http://msdn.microsoft.com/en-us/library/ms730167(v=vs.110).aspx

또한

당신은 당신의 인터페이스와 객체를 매핑 할 KnownTypes를 사용할 수 있습니다. 이 링크를보세요 : WCF - Object as known type -> interoperable? WCF, Interface return type and KnownTypes

1

이 서비스 운영을위한 일반적인 방법의 사용을 지원하지 않습니다 손

WCF에서 당신에게 문제에 어떤 도움을 줄 수 있습니다. 즉, 구체적인 유형 만 서비스 작업에 사용할 수 있습니다. 일반 제네릭 유형은 사용할 수 없습니다. 이제는 WCF의 제한이 아니라는 것을 분명히하기 위해 이 중요합니다. 대신 서비스 메타 데이터를 소비자에게 노출시키는 데 사용되는 WSDL의 제한은 입니다. WSDL 내에 일반 유형을 정의하는 구조는 없습니다. 일반적으로 말하자면, 클라이언트와 서비스 간의 결합을 감소시키기 때문에이 동작에 동의합니다.

일반 메서드는 지원되지 않지만 데이터 교환을 위해 일반 개체를 노출 할 수 있습니다. 그러나 거기에 몇 가지 제한 사항이 있습니다. 의 좀 더 자세히 살펴 보자 :

http://jeffbarnes.net/blog/post/2007/05/10/WCF-Serialization-and-Generics.aspx

관련 문제