2012-03-26 14 views
0

私はWCFサービスとそのコードを使用しており、これらのサービス間でデータタイプを共有したいと考えています。WCFサービス共有タイプ

共有するタイプのWCFライブラリがあります。私のWCFサービスと私のWCFクライアントはどちらもライブラリからアセンブリを参照します。クラスは次のようになります。私は私の消費アプリケーションでやりたい何

<DataContract()> _ 
Public Class MyEntity 

    Private _culture As String = String.Empty 
    Private _name As String = String.Empty  

    <DataMember()> _ 
    Public Property ID As Integer 
     Get 
      Return _id 
     End Get 
     Set(ByVal Value As Integer) 
      _id = Value 
     End Set 
    End Property 


    <DataMember()> _ 
    Public Property Name() As String 
     Get 
      Return _name 
     End Get 
     Set(ByVal Value As String) 
      _name = Value 
     End Set 
    End Property 

End Class 

はMyEntityのインスタンスを作成し、それが自然のインスタンスを返し、私のサービスのメソッドの戻り値に値だ割り当てるですMyEntity。

だから私は私のクライアントからの私のサービスへの参照を追加し、サービスの名前空間に名前を付けたときに「MyWCF」私がしたいような何か:私はこれを行うとき

Dim entity as new MyEntity 
dim srv as new MyWCF.MyServiceClient 
entity = srv.MyMethod() 

は今、コンパイラは私を与えます暗黙的にタイプmyclientnamespace.MySCF.Myclassをmyclientnamespace.MyClassに変換できないため、エラーです。私は投稿hereと別のstackoverflowスレッドで参照されていた記事hereを読んでいます。クライアントコードがサービスコードと同じアセンブリを参照していて、そのアセンブリ参照がより前にある場合、クライアント参照コードをではなく、参照先のクラスを使用して作成する必要があります。エンティティアセンブリ。私はこれを試して、それは動作していません。私は、サービスリファレンスを作成するときに、「参照されているすべてのアセンブリの種類を再利用する」ラジオボタンがチェックされていることを確認しました。

私の質問は以下のとおりです。

は、誰も私が間違ってここにやっているかを見ることができますか?エンティティアセンブリの参照が行われた後にサービス参照を作成して、型を再利用する必要はありませんか?

このようにタイプを再利用することはできますか?

アドバイスをいただければ幸いです。ありがとう!

答えて

0

あなたのタイプをこのように再利用することは完全に可能です。手作業でクライアントプロキシを作成すると、名前空間を含むこの動作をより詳細に制御できます。プロキシは共有データ型で何もする必要はなく、プロキシから除外することができ、共有アセンブリ内の1つの名前空間にのみ存在することができます。

関連する問題