1

System.Windows.FormsWCFサービスライブラリに追加できません。

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

どのように私はそれを行うことができますか?

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

これは私のItem.csクラスです:

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

2 に答える 2

5

WCFは相互運用可能なサービスプラットフォームとして設計されているため、サービスからの戻り型のように.NET固有のデータ型を使用しないことをお勧めします。ListViewItem結局のところ、PHPまたはRubyクライアントはそのようなオブジェクトで何をしますか?

代わりに、Itemクラスを使用し、WCFサービスからそれらのリストを返し、それを呼び出し元のアプリケーションに任せて、必要に応じてそれをsに変換しListViewItemます。

ListViewItemまた、WCFサービスから戻ると、そのサービスの機能が大幅に制限されます。一部のクライアントがそのデータを取得したいが、他の方法で(ではなくListView)提示した場合、そのサービス呼び出しを使用できなくなります.....データ要素(のようなItem)クラスのみを返すことで、そのデータをどう処理するか、そしておそらくそれを画面に表示する方法を決定するのは発信者次第です。それは良いことだと思います。変更すべきではありません。

于 2012-04-13T05:16:43.127 に答える
0

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

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

于 2012-04-13T05:20:03.200 に答える