2009-07-24 21 views
0

私はクラス(ABC)とそのクラスのコレクション(ABCCollection:IList、T:ABC)を作成した別個のアセンブリ(WebServiceの参照)を持っています。今私はプロキシファイル(output.configとService1.cs)を構築すると、これらの2つのクラスのdefienationは公開されていません。その代わりに、ABCCollectionはServic1.csに公開されています(ABCCollection4IP3のようです)。公開構造 - WCF Webサービス

彼らは同じ型であることを意味していない

+0

4IP3とは何ですか?これは、コレクションのtha nemeに追加されましたか?私は以前これを決してしなかった。 –

+0

はいsvcutil.exeから.csファイルを生成すると、これは私のカスタムコレクションを次のように参照します –

+0

詳細を説明するために、私のカスタムコレクションをWebサービスから公開したいのですがどうすればいいですか?カスタムコレクションクラスは、私のWebService(WCF)によって参照される別のアセンブリにあります。 –

答えて

0

...私はこの問題について考えられる原因を教えてください。これは設計によるものです。あなたのサービスが.NETとJavaのクライアントにある場合、どのように動作するかを考えてください。彼らは明らかに2つの異なるタイプであろう。

総会SomeProject.ServiceContract

このアセンブリは、あなたのサービス契約(単にインターフェース)を含んでいます

0

WCFサービスを設計する最善の方法は、別々のアセンブリにプロジェクトを分割することです。

例:

[ServiceContract (...)] 
public interface ICan { 

    [ServiceOperation (...)] 
    void EatCandies (MyListOfCandies candies); 

} 

総会SomeProject.DataObjects

このアセンブリは、あなたのサービス契約で使用されているすべてのデータオブジェクトが含まれています。

例:Webサービスを消費しているプロジェクトでは、

[DataObject] 
public class MyListOfCandies : List<Candy> { 
    ... 
} 

は、アセンブリ「SomeProject.DataObjects」を参照して、Webサービスを追加します。 Visual Studioはスタブオブジェクトを生成しなくなりますが、実装を使用します。

ServiceContractアセンブリでも同じことができます。この方法でもWebサービスを使用できますが、インタフェースを変更するとコンパイルエラーが発生します。

関連する問題