如何在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);
}
谢谢!
请查看MSDN上的Tuple class页面。Tuple
是数据的一般持有者。。。你可以这样使用它:
Tuple<int, TransportOrder> data = new Tuple<int, TransportOrder>(toTempId, to);
它们是非常有用的"容器",最多可以使用8个输入参数。
然后,您可以访问另一端的值,如下所示:
int toTempId = data.Item1;
TransportOrder to = data.Item2;