2012-04-13 16 views
1

私のクライアントからwcfサービスに不明なタイプを渡す必要があります。wcfサービスにカスタムタイプを送信

サービスにタイプが不明です。

たとえば、私はserializeのインスタンスを作成してサービスに送信するクラスCustomerを持っていますが、deserializeする必要があるときに問題が発生します。私はdesrializedオブジェクトをキャストするために型を提供する必要があります。

{"Type 'System.RuntimeType' with data contract name 
'RuntimeType:http://schemas.datacontract.org/2004/07/System' is not expected. Consider 
    using a DataContractResolver or add any types not known statically to the list of 
    known types - for example, by using the KnownTypeAttribute attribute or by adding 
    them to the list of known types passed to DataContractSerializer."} 

私はこの問題を回避するには、任意のアイデアを見つける必要がある:

タイプしようとしたとき、私は次のエラーを取得する、シリアライズすることはできませんか?

ただ要約する:

を私はWCFサービスへの未知のタイプを送信するための回避策を探しています。

+1

「他端」には、同じ顧客クラスがありますが、着信データが顧客インスタンスであることを事前に認識していないか、b:類似しているが相性が異なる顧客クラスc:顧客について何も知らない? –

+1

オブジェクトを受け取ったらそれをどのように使用しますか? –

+0

@MarcGravell c - 顧客クラスについて何も知らない –

答えて

2

もう一方の端がそれについて何も知らない(コメント)場合、デシリアライズできない可能性があります。型ベースのシリアライザ(BinaryFormatter/NetDataContractSerializer)を使用しても、それを行うことはできませんでした。

完全に外部データを送信している場合、基本的にはXMLやJSONなどに限定されていますが、その意味も少し曖昧です(<id>123<id>文字列?int?float?long?)。

WCFはシナリオ(他のほとんどの契約ベースのスタックではありませんが、ほとんどのシステムでは受信データを理解できることが期待されています)。

+0

私の顧客タイプ を含むdll全体を送信して、それをサービス側にロードすることは可能でしょうか? –

+0

私はWCFが適していないとは言いません。 SOAPはそうではないかもしれませんが、JSONやXMLを操作するRESTfulなWCF Webサービスはうまくいくでしょう。 –

+0

サービスに送信される特定のオブジェクトタイプを解決する動的タイプのプロセスユニット を作成する必要があります。 タイプの実行メソッドを解決するには、タイプする必要があります –