我正在玩.NET的BackgroundWorker
类。作为其功能的一部分,您可以调用名为ReportProgress
的方法,该方法允许您传入后台任务已完成的百分比以及可选的用户参数。将匿名类型附加到对象;如何检索它?
最终ReportProgress
调用一个事件处理程序,可选的用户参数成为事件参数的“UserState”成员。
这里有一个快速的样品的情况下,我没有说清楚:
BackgroundProcess.ReportProgress(100, new{title="complete"});
/*****later on, this method is called******/
private void myEventHandler(object sender, RunWorkerCompletedEventArgs e)
{
//e.UserState is my anonymous type defined in the call to ReportProgress(...)
}
我的问题是,我怎么能访问我的匿名类型的“称号”的价值?我假设我需要使用反射,但到目前为止我没有很好的运气。
我知道这很烦人,不得不定义愚蠢的一次性类型,但到目前为止,最习惯和最干净的解决方案将是在这里定义一个具有title属性的命名类型。为什么要反思? – mquander 2011-05-11 22:08:04
但是如果你只需要标题,为什么要定义一个对象呢?只需传递一个字符串并将其转换为事件处理函数中的字符串。 – 2011-05-11 22:36:03
你的问题是完全有效的,但在这一点上对我来说这是一个学术问题 - 我一直在摆弄这样的反思,每次我想我都有,但我没有。 – larryq 2011-05-11 23:06:33