【发布时间】:2011-05-11 22:05:09
【问题描述】:
我正在使用 .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”值?我认为我需要使用反射,但到目前为止我运气不佳。
【问题讨论】:
-
我知道必须定义愚蠢的一次性类型很烦人,但到目前为止,最惯用和最干净的解决方案就是在这里定义一个带有标题属性的命名类型。为什么要费心反思?
-
但是如果你只需要标题,为什么还要定义一个对象呢?只需传递一个字符串并将其转换为事件处理程序中的字符串。
-
你的问题是完全有效的,但在这一点上,这对我来说是一个学术问题——我一直在努力让它与反思一起工作,每次我认为我有它时,我没有.
标签: c# reflection anonymous-types