我正在构建一个匿名对象:
var userToken = new {myMsg = Msg, myTimer = timer};
并将其传递给事件处理程序:
smtp.SendCompleted += SendCompletedCallback;
private static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
{
var msg = e.UserState;
}
检查msg
表明它包含我已经传递的值,但我不清楚允许我在代码中访问这些值的语法。
答案 0 :(得分:3)
由于这是一个匿名对象,您可以使用dynamic
或cast-by-example技术访问这些属性。
但理想情况下,您可以为该数据创建一个强类型对象。
答案 1 :(得分:3)
改善Jordao的答案:
private static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
{
dynamic msg = e.UserState;
MyMessageType myMsg = msg.myMsg;
MyTimerType myTimer = msg.myTimer;
}