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

时间:2012-04-13 04:58:09

标签: c# wcf serialization

我无法将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;
  }
}

2 个答案:

答案 0 :(得分:5)

WCF旨在成为可互操作的服务平台,因此我建议 NOT 使用特定于ListViewItem的.NET特定数据类型作为您的返回类型服务。毕竟,PHP或Ruby客户端将如何处理这样的对象?

相反:使用您的Item类,返回WCF服务中的列表,然后将其留给调用应用程序,根据需要将其转换为ListViewItem ....

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

答案 1 :(得分:0)

您不应该从WCF服务返回表单控件或控件列表。返回类型可以是Datacontract,Messagecontract,.NET基元类型以及可以通过线路序列化的类型。

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