2013-08-27 14 views
0

我需要將某個數據從一個地方異步發送到另一個地方。 爲此,我使用GalaSoft.MvvmLight.Messaging。如何在Messenger.Default.Send中發送兩個通用參數<param1,param2>

如果我有一個參數發送沒有問題。

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個參數的正確途徑。如果需要傳遞更多數據,則需要像創建消息一樣創建消息對象。 – fantastik78

+0

認爲這是不可能的,但不知道。按照Sheridan的建議,我將使用Tuple類。 –

回答

2

請查看MSDN上的Tuple Class頁面。一個Tuple是數據的通用持有者...您可以使用它像這樣:

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

他們是非常有用的「容器」,可能需要多達8個的輸入參數。

然後就可以在另一端訪問該值,如:

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

我將ObjectHolder中的代碼更改爲Tuple。感謝提示。不知道有這樣的班級。 –

相關問題