0

我需要将一些数据从一个地方异步发送到另一个地方。为此,我使用 GalaSoft.MvvmLight.Messaging。

如果我要发送一个参数,则没有问题。

铁。

//Sends 
public void SendDriverToClient(Driver driver)
{
   Messenger.Default.Send<Driver>(driver, MessengerTokensServer.ReceiveDriver);
}

//Register
Messenger.Default.Register<Driver>(this, MessengerTokensServer.ReceiveDriver, ReceiveDriver);

//Receive
private void ReceiveDriver(Driver driver)
{
   //Instructions
}

问题是当我有多个参数要发送时。

铁。

public void SendLinesUpdatedInTOToClient(int toTempId, TransportOrder to)
{
        Messenger.Default.Send<int, TransportOrder>(*Here I should have to place toTempId & to*, MessengerTokensServer.GetUpdatedTransportOrder);
}

我已经有了自己的解决方案,但可能不是正确的方法。当前代码是这样的:

class ObjectHolder    
{
    public TransportOrder UpdatedTransportOrder { get; set; }
    public int TempId { get; set; }
} 

public void SendLinesUpdatedInTOToClient(int toTempId, TransportOrder to)
{
    Messenger.Default.Send<ObjectHolder>(new ObjectHolder{UpdatedTransportOrder = to, TempId = toTempId}, MessengerTokensServer.GetUpdatedTransportOrder);
}

谢谢!

4

1 回答 1

2

请查看 MSDN 上的Tuple Class页面。ATuple是数据的通用持有者...您可以像这样使用它:

Tuple<int, TransportOrder> data = new Tuple<int, TransportOrder>(toTempId, to);

它们是非常有用的“容器”,最多可以接收 8 个输入参数。

然后,您可以访问另一端的值,如下所示:

int toTempId = data.Item1;
TransportOrder to = data.Item2;
于 2013-08-27T14:10:53.847 回答