我正在快速使用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让我感到难过。我搜索了几个小时,但没有用。我做错了什么。
答案 0 :(得分:0)
像这样改变,
您的结果属于TabletController.PlinkerWCFservice.clsPlinkerGame
类型,但您有clsPlinker.Game
List<TabletController.PlinkerWCFservice.clsPlinkerGame> lstGames = wcfTest.GetGameList().ToList();
答案 1 :(得分:0)
添加服务引用时,将集合类型从System.Array更改为System.Collections.Generic.List并重用所有引用程序集中的类型。