重新保湿通过AsyncCompletedEventArgs传递的对象

时间:2011-08-26 18:35:51

标签: c#

我正在构建一个匿名对象:

    var userToken = new {myMsg = Msg, myTimer = timer};

并将其传递给事件处理程序:

    smtp.SendCompleted += SendCompletedCallback;

    private static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
    {
        var msg =  e.UserState;
    }

检查msg表明它包含我已经传递的值,但我不清楚允许我在代码中访问这些值的语法。

2 个答案:

答案 0 :(得分:3)

由于这是一个匿名对象,您可以使用dynamiccast-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;
}