gpt4 book ai didi

c# - 用户定义的转换错误

转载 作者:行者123 更新时间:2023-11-30 21:00:47 24 4
gpt4 key购买 nike

我的解决方案中有 2 个项目,一个 web-service 项目和一个 win-forms 项目。我想将 web 服务的返回数据转换为 win-forms 数据。我在两个项目中都定义了 Terminal 类。在 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;
}

但它不起作用并给出错误用户定义的转换必须转换为封闭类型或从封闭类型转换,这种情况发生在 List 转换中。但是在Terminal cast 一切正常

static public implicit operator Terminal(EService.Terminal svcTerminal)
{
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;
return terminal;
}

谁能帮我解决这个问题,这样我就可以

return (List<Terminal>)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;

最佳答案

你可以这样做:

eService.CheckTerminal(guid, ref cityName, ref portName).Select(x => (Terminal) x);

关于c# - 用户定义的转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14727627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com