Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Messenger中发送两个通用参数。Default.send<;参数1、参数2>;_C#_Wpf_Generics_Mvvm_Messaging - Fatal编程技术网

C# 如何在Messenger中发送两个通用参数。Default.send<;参数1、参数2>;

C# 如何在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

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

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

Fe

//发送
公用无效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。谢谢你的提示。不知道有这样的课。