无法将“System.Windows.Forms”引用添加到我的 WCF 服务库

本文关键字:添加 我的 WCF 服务 引用 System Forms Windows | 更新日期: 2023-09-27 18:31:10

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

我想从我的方法GetItems(string path)返回一个List<ListViewItem>,我也尝试添加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;
  }
}

无法将“System.Windows.Forms”引用添加到我的 WCF 服务库

WCF 被设计为一个可互操作的服务平台,因此我建议不要使用 .NET 特定的数据类型(如 ListViewItem)作为服务的返回类型。毕竟,PHP 或 Ruby 客户端会如何处理这样的对象?

相反:使用 Item 类,从 WCF 服务返回这些类的列表,并将其留给调用应用程序根据需要将其转换为 ListViewItem s。

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

不应从 WCF 服务返回窗体控件或控件列表。返回类型可以是 数据协定 、 消息协定、.NET 基元类型和可以通过网络序列化的类型。

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