我需要将一些数据从一个地方异步发送到另一个地方。 为此我使用了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);
}
谢谢!
答案 0 :(得分:2)
请查看MSDN上的Tuple Class页面。 Tuple
是数据的通用持有者......您可以像这样使用它:
Tuple<int, TransportOrder> data = new Tuple<int, TransportOrder>(toTempId, to);
它们是非常有用的“容器”,最多可以输入8个输入参数。
然后您可以访问另一端的值,如下所示:
int toTempId = data.Item1;
TransportOrder to = data.Item2;