我无法将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;
}
}
答案 0 :(得分:5)
WCF旨在成为可互操作的服务平台,因此我建议 NOT 使用特定于ListViewItem
的.NET特定数据类型作为您的返回类型服务。毕竟,PHP或Ruby客户端将如何处理这样的对象?
相反:使用您的Item
类,返回WCF服务中的列表,然后将其留给调用应用程序,根据需要将其转换为ListViewItem
....
另外:从您的WCF服务返回ListViewItem
将严重限制该服务的功能。如果某个客户想要获取该数据,但是以其他方式呈现(不是ListView
),他们就不能再使用该服务了.....返回只是数据元素(与您的Item
)类一样,您可以将其留给调用者来决定如何处理该数据,以及如何在屏幕上显示该数据。我认为这是好事,不应该改变!
答案 1 :(得分:0)
您不应该从WCF服务返回表单控件或控件列表。返回类型可以是Datacontract,Messagecontract,.NET基元类型以及可以通过线路序列化的类型。
WCF服务应该公开数据而不是UI控件。它取决于客户端应用程序以任何形式显示该数据。您应该创建Windows客户端以在列表视图中显示数据。