如何返回List<>来自WCF调用

时间:2014-12-16 04:47:30

标签: c# winforms wcf list serialization

我正在快速使用WCF。我已经创建了我的WCF服务,并且我在控制台应用程序中托管它。

我的自定义类在服务和客户端之间共享。

[Serializable]
public class clsPlinker
{
    [Serializable]
    public class Game : Object
    {
        public Game(string name, string desc, int GameNum)
        {
            _Name = name;
            _Desc = desc;
            _GameNum = GameNum;
        }
    }
}

这是我的界面

[ServiceContract]
public interface IPlinkerWCFservice
{
    [OperationContract]
    List<clsPlinker.Game> GetGameList();
}

这是我的服务

public class PlinkerWCFservice : IPlinkerWCFservice
{
    public List<clsPlinker.Game> GetGameList()
    {
        List<clsPlinker.Game> lstGames = new List<clsPlinker.Game>();
        // do stuff to load the lstGames
        return lstGames;
    }
}

在我的Windows客户端应用程序中,我调用服务引用

PlinkerWCFservice.PlinkerWCFserviceClient wcfTest = new PlinkerWCFservice.PlinkerWCFserviceClient("NetTcpBinding_IPlinkerWCFservice");
List<clsPlinker.Game> lstGames = wcfTest.GetGameList().ToList();

代码将无法编译,从而给出以下错误:

  

无法隐式转换类型   System.Collections.Generic.List<TabletController.PlinkerWCFservice.clsPlinkerGame>   到System.Collections.Generic.List<PlinkerCommon.clsPlinker.Game>

TabletController是我的WinForms应用程序的命名空间。

在另一种方法中,我可以返回一个单独的clsPlinker.Game,但是尝试返回一个List让我感到难过。我搜索了几个小时,但没有用。我做错了什么。

2 个答案:

答案 0 :(得分:0)

像这样改变,

您的结果属于TabletController.PlinkerWCFservice.clsPlinkerGame类型,但您有clsPlinker.Game

List<TabletController.PlinkerWCFservice.clsPlinkerGame> lstGames = wcfTest.GetGameList().ToList();

答案 1 :(得分:0)

添加服务引用时,将集合类型从System.Array更改为System.Collections.Generic.List并重用所有引用程序集中的类型。