C# 如何在Messenger中发送两个通用参数。Default.send<;参数1、参数2>;
我需要将一些数据从一个地方异步发送到另一个地方。 为此,我使用GalaSoft.MvvmLight.Messaging 如果我有一个参数发送没有问题 FeC# 如何在Messenger中发送两个通用参数。Default.send<;参数1、参数2>;,c#,wpf,generics,mvvm,messaging,C#,Wpf,Generics,Mvvm,Messaging,我需要将一些数据从一个地方异步发送到另一个地方。 为此,我使用GalaSoft.MvvmLight.Messaging 如果我有一个参数发送没有问题 Fe //发送 公用无效SendDriverToClient(驱动程序) { Messenger.Default.Send(驱动程序,Messenger令牌服务器.ReceiveDriver); } //登记册 Messenger.Default.Register(此,Messenger TokensServer.ReceiveDriver,Rec
//发送
公用无效SendDriverToClient(驱动程序)
{
Messenger.Default.Send(驱动程序,Messenger令牌服务器.ReceiveDriver);
}
//登记册
Messenger.Default.Register(此,Messenger TokensServer.ReceiveDriver,ReceiveDriver);
//接收
私人无效接收驱动程序(驱动程序)
{
//指示
}
问题是当我有多个参数要发送时
Fe
public void SendLinesUpdatedInTOToClient(int-toTempId,TransportOrder-to)
{
senger.Default.Send(*此处我必须放置toTempId&to*,Messenger令牌服务器.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);
}
Tuple<int, TransportOrder> data = new Tuple<int, TransportOrder>(toTempId, to);
int toTempId = data.Item1;
TransportOrder to = data.Item2;
类对象持有者
{
public TransportOrder UpdatedTransportOrder{get;set;}
公共int TempId{get;set;}
}
public void sendlinesupdatedintocollient(int-toTempId,TransportOrder-to)
{
Send(新对象持有者{UpdatedTransportOrder=to,TempId=toTempId},Messenger令牌服务器.GetUpdatedTransportOrder);
}
谢谢 请查看MSDN上的页面。元组是数据的通用持有者。。。您可以这样使用它:
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);
}
Tuple<int, TransportOrder> data = new Tuple<int, TransportOrder>(toTempId, to);
int toTempId = data.Item1;
TransportOrder to = data.Item2;
我认为这样做是正确的,因为不能同时发送两个参数。如果你需要传递更多的数据,你需要像以前一样创建一个消息对象。我将按照Sheridan的建议使用Tuple类。我将使用ObjectHolder的代码更改为Tuple。谢谢你的提示。不知道有这样的课。