如何在Messenger中发送两个通用参数.默认值.发送<;param1、param2>;

本文关键字:发送 默认值 参数 gt lt param1 param2 两个 Messenger | 更新日期: 2023-09-27 18:29:07

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

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

Fe。

//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
}

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

Fe。

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);
}

谢谢!

如何在Messenger中发送两个通用参数.默认值.发送<;param1、param2>;

请查看MSDN上的Tuple class页面。Tuple是数据的一般持有者。。。你可以这样使用它:

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

它们是非常有用的"容器",最多可以使用8个输入参数。

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

int toTempId = data.Item1;
TransportOrder to = data.Item2;