2012-04-13 10 views
1

私のWCFサービスライブラリにSystem.Windows.Formsを追加できません。私のWCFサービスライブラリに `System.Windows.Forms`リファレンスを追加できません

GetItems(string path)List<ListViewItem>を返信したいと思いますが、System.Windows.Formsの参照を追加しようとしましたが、WCFサービスライブラリがサポートしていないようです。

どうすればいいですか?

namespace WcfServiceLibrary1 
{ 
    [ServiceContract] 
    public interface IFileManager 
    { 
     [OperationContract] 
     List<ListViewItem> collection(string path); 
    } 
} 

これは私のItem.csクラスです:WCFは、相互運用可能サービスプラットフォームとなるように設計され

namespace WcfServiceLibrary1 
{ 
    [DataContract] 
    public class Item 
    { 
    [DataMember] 
    public string name; 
    [DataMember] 
    public string path; 
    [DataMember] 
    public long size; 
    [DataMember] 
    public DateTime date; 
    } 
} 
+0

私は、Windowsフォームアプリケーションを作成し、WCFサービスをクライアントとして使用する必要があると思います。それから、そのメトトを呼び出して、その結果をあなたのフォームに表示することができます。 WCFの目的は、ユーザーにデータを表示しないことです。 – Fer

答えて

5

、したがって、私はリターンとしてListViewItemなどの.NET固有のデータ型を使用するませをお勧めしますあなたのサービスの種類。結局のところ、PHPやRubyのクライアントは、このようなオブジェクトで何をしますか?

が代わりに :あなたのWCFサービスからそれらのリストを返す、あなたのItemクラスを使用し、必要に応じてListViewItem秒にそれを変換するために、呼び出し元のアプリケーションにそれを残して....また

:からListViewItemを返しますあなたのWCFサービスはと重くなります。はそのサービスの機能を制限します。 (ListViewではなく)何人かのクライアントがそのデータを取得したい場合は、のデータ要素Itemのように)を返すことで、そのサービス呼び出しをもう使用できませんでした。クラスでは、呼び出し元にそのデータをどのように処理するか、また画面に表示する方法を決定するために呼び出し側に任せます。私はそれが良いことだと思いますと変更する必要はありません!

+0

あなたは私が作成したアイテムクラスのリスト 'List 'を使っています!右 ? –

+0

@MurHafSoz:yes - あなたのサービスから 'List 'を返します。そして、呼び出し側がその情報を使って何をしたいのか(何らかの計算をして保存し、画面に表示します)、呼び出し元が表示したい形式呼び出し元の責任である - サービスはちょうどデータを提供する - 何も –

+0

意味がある、ありがとう:) –

0

WCFサービスからフォームコントロールまたはコントロールの一覧を返すことは想定されていません。戻り値の型は、Datacontract、Messagecontract、.NETプリミティブ型、およびワイヤを介してシリアル化できる型にすることができます。

WCFサービスは、UIコントロールではなくデータを公開することになっています。そのデータをどのような形式で表示するかは、クライアントアプリケーションによって異なります。リストビューでデータを表示するには、Windowsクライアントを作成する必要があります。

関連する問題