重新水化通过AsyncCompletedEventArgs传递的对象

本文关键字:对象 AsyncCompletedEventArgs 新水化 | 更新日期: 2023-09-27 18:06:50

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

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

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

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

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

重新水化通过AsyncCompletedEventArgs传递的对象

改进Jordao的回答:

private static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
{
    dynamic msg = e.UserState;
    MyMessageType myMsg = msg.myMsg;
    MyTimerType myTimer = msg.myTimer;
}

由于这是一个匿名对象,您可以使用dynamic或实例强制转换技术访问这些属性。

理想情况下,您应该为该数据创建强类型对象。