C# 用户定义的转换错误
我的解决方案中有两个项目,一个是C# 用户定义的转换错误,c#,.net,casting,C#,.net,Casting,我的解决方案中有两个项目,一个是webservice项目,另一个是winforms项目。我想转换web服务的返回数据以赢得表单数据。我在两个项目中都定义了类终端。在win应用程序中,我编写了以下演员阵容: static public implicit operator List<Terminal>(EService.Terminal[] svcTerminals) { List<Terminal> terminals = new List<Terminal&
webservice
项目,另一个是winforms
项目。我想转换web服务的返回数据以赢得表单数据。我在两个项目中都定义了类终端。在win应用程序中,我编写了以下演员阵容:
static public implicit operator List<Terminal>(EService.Terminal[] svcTerminals)
{
List<Terminal> terminals = new List<Terminal>();
foreach (var svcTerminal in svcTerminals)
{
Terminal terminal = new Terminal();
terminal.TerminalID = svcTerminal.TerminalID;
terminal.TerminalTypeID = svcTerminal.TerminalTypeID;
terminal.TerminalGUID = svcTerminal.TerminalGUID;
terminal.Description = svcTerminal.Description;
terminal.Name = svcTerminal.Name;
terminal.PortID = svcTerminal.PortID;
terminals.Add(terminal);
}
return terminals;
}
有人能帮我修一下吗
return (List<Terminal>)eService.CheckTerminal(guid, ref cityName, ref portName);
return(List)eService.CheckTerminal(guid,ref cityName,ref portName);
而不是
List<Terminal> terminals = new List<Terminal>();
var svcTerminals = eService.CheckTerminal(guid, ref cityName, ref portName);
foreach (var svcTerminal in svcTerminals)
{
Terminal terminal = new Terminal();
terminal.TerminalID = svcTerminal.TerminalID;
terminal.TerminalTypeID = svcTerminal.TerminalTypeID;
terminal.TerminalGUID = svcTerminal.TerminalGUID;
terminal.Description = svcTerminal.Description;
terminal.Name = svcTerminal.Name;
terminal.PortID = svcTerminal.PortID;
terminals.Add((Terminal)svcTerminal);
}
return terminals;
列表终端=新列表();
var svcTerminals=eService.checkTerminals(guid,ref cityName,ref portName);
foreach(svcTerminals中的svcTerminals变量)
{
端子=新端子();
terminal.TerminalID=svcTerminal.TerminalID;
terminal.TerminalTypeID=svcTerminal.TerminalTypeID;
terminal.TerminalGUID=svcTerminal.TerminalGUID;
terminal.Description=svcTerminal.Description;
terminal.Name=svcTerminal.Name;
terminal.PortID=svcTerminal.PortID;
终端。添加((终端)svcTerminal);
}
返回终端;
您可以执行以下操作:
eService.CheckTerminal(guid, ref cityName, ref portName).Select(x => (Terminal) x);
你可以做:
eService.CheckTerminal(guid, ref cityName, ref portName).Select(x => (Terminal) x);
MSDN说
要转换的参数的类型或转换结果的类型(但不能两者都是)必须是包含类型
因此,要使his正常工作,您需要将转换运算符声明移动到要转换到(或从)的类中,即List
或EService.Terminal[]
。因为不能将方法添加到标准类中,所以我建议使用此方法而不是运算符,或者使用LINQ。MSDN说
要转换的参数的类型或转换结果的类型(但不能两者都是)必须是包含类型
因此,要使his正常工作,您需要将转换运算符声明移动到要转换到(或从)的类中,即
List
或EService.Terminal[]
。由于无法将方法添加到标准类中,因此我建议使用此方法而不是运算符,或者使用LINQ。谢谢@manojlds,这就是我要找的。Linq永远是最好的方式。祝你好运。谢谢@manojlds,这就是我要找的。Linq永远是最好的方式。祝你好运