私のソリューションには、web-service
プロジェクトとプロジェクトの 2 つのプロジェクトがあり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;
}
しかし、それは機能せず、user-defined conversion must convert to or from enclosing typeというエラーが発生します。これはListキャストで発生します。しかし、ターミナルキャストではすべて問題ありません
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;