1

我无法添加System.Windows.Forms到我的 WCF 服务库。

我想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 服务返回一个列表,然后将其留给调用应用程序ListViewItem根据需要将其转换为 s....

另外:ListViewItem从您的 WCF 服务返回会严重限制该服务的功能。如果某些客户想要获取该数据,但以其他方式(不是在 a 中ListView)呈现它,他们将无法再使用该服务调用.....通过仅返回数据元素(如您的Item)类,您离开由调用者决定如何处理该数据,以及如何在屏幕上显示它。我认为这是一件好事,不应该改变!

于 2012-04-13T05:16:43.127 回答
0

您不应该从 WCF 服务返回表单控件或控件列表。返回类型可以是 Datacontract 、 Messagecontract 、 .NET 原始类型以及可以通过网络进行序列化的类型。

WCF 服务应该公开数据而不是 UI 控件。它依赖于客户端应用程序以任何形式显示该数据。您应该创建 Windows 客户端以在列表视图中显示数据。

于 2012-04-13T05:20:03.200 回答