<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_BruceLee</title><subtitle type="text">DocumentDiscussion</subtitle><id>http://feed.cnblogs.com/blog/u/15188/rss</id><updated>2012-01-24T12:45:22Z</updated><author><name>Bruce Lee</name><uri>http://www.cnblogs.com/BruceLee521/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BruceLee521/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/15188/rss"/><entry><id>http://www.cnblogs.com/BruceLee521/archive/2011/05/27/2059692.html</id><title type="text">WPF和Silverlight程序中DispatcherTimer与Timer的区别</title><summary type="text">相同点：都是定时执行任务的计时器，都可以使用。 不同点：Timer运行在非UI 线程，如果Timer需要更新UI的时候，需要调用 Invoke或者 BeginInvoke DispatcherTimer运行在UI 线程，处理的 Dispatcher 队列中的计时器，可以直接更新UI WPF 应用程序启动时具有两个线程：一个用于处理呈现，另一个用于管理 UI。 呈现线程实际上隐藏在后台运行，而 UI...</summary><published>2011-05-27T03:38:00Z</published><updated>2011-05-27T03:38:00Z</updated><author><name>Bruce Lee</name><uri>http://www.cnblogs.com/BruceLee521/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BruceLee521/archive/2011/05/27/2059692.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BruceLee521/archive/2011/05/27/2059692.html"/><content type="html">&lt;p&gt;相同点：都是定时执行任务的计时器，都可以使用。  &lt;p&gt;不同点：Timer运行在非UI 线程，如果Timer需要更新UI的时候，需要调用 Invoke或者 BeginInvoke  &lt;p&gt;DispatcherTimer运行在UI 线程，处理的 Dispatcher 队列中的计时器，可以直接更新UI  &lt;p&gt;WPF 应用程序启动时具有两个线程：一个用于处理呈现，另一个用于管理 UI。  &lt;p&gt;呈现线程实际上隐藏在后台运行，而 UI 线程则接收输入、处理事件、绘制屏幕以及运行应用程序代码。 大多数应用程序只使用一个 UI 线程，但在某些情况下，最好使用多个线程。比如大数据量的处理放到后台线程中。  &lt;p&gt;UI 线程在一个名为 Dispatcher 的对象中将工作项进行排队。Dispatcher 根据优先级选择工作项，并运行每一个工作项直到完成。每个 UI 线程都必须至少有一个 Dispatcher，而每个 Dispatcher 都只能在一个线程中执行工作项。  &lt;p&gt;要构建响应速度快、且用户友好的应用程序，诀窍是减小工作项，以最大限度地提高 Dispatcher 吞吐量。 这样，工作项将永远不会因为在 Dispatcher 队列中等待处理而失效。 输入与响应之间的任何可察觉的延迟都会使用户不快。  &lt;img src="http://www.cnblogs.com/BruceLee521/aggbug/2059692.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BruceLee521/archive/2011/05/27/2059692.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/BruceLee521/archive/2010/10/19/1855994.html</id><title type="text">在Silverlight中使用List&amp;lt;Object&amp;gt;构造交叉表作为Silverlight的DataGrid的数据源</title><summary type="text">问题起源：一个同事取出一个表的数据，然后根据选择的监测因子和区域，构建一个交叉表，然后要绑定到Silverlight的DataGrid上，他没头绪，我帮忙解决这个问题。问题解决：1.最好的办法是在获取数据时就把交叉表构建好，可以构建2种交叉表，一种是定列的，一种是动态列的，都可以通过SQL构建好，这里就不熬诉了。2.同事说数据对象已经取好了，不想改代码，也是因为用的Ibatis.net构建的实体，...</summary><published>2010-10-19T15:32:00Z</published><updated>2010-10-19T15:32:00Z</updated><author><name>Bruce Lee</name><uri>http://www.cnblogs.com/BruceLee521/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BruceLee521/archive/2010/10/19/1855994.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BruceLee521/archive/2010/10/19/1855994.html"/><content type="html">&lt;p&gt;问题起源：一个同事取出一个表的数据，然后根据选择的监测因子和区域，构建一个交叉表，然后要绑定到Silverlight的DataGrid上，他没头绪，我帮忙解决这个问题。&lt;/p&gt;&#xD;
&lt;p&gt;问题解决：&lt;/p&gt;&#xD;
&lt;p&gt;1.最好的办法是在获取数据时就把交叉表构建好，可以构建2种交叉表，一种是定列的，一种是动态列的，都可以通过SQL构建好，这里就不熬诉了。&lt;/p&gt;&#xD;
&lt;p&gt;2.同事说数据对象已经取好了，不想改代码，也是因为用的Ibatis.net构建的实体，要是构建动态的交叉表，实体层代码确实要改挺多。最后决定在客户端写C#代码构建一个交叉表数据源绑定到DataGrid上。&lt;/p&gt;&#xD;
&lt;p&gt;DataGrid的ItemsSource需要一个实现了IEnumerable的对象&lt;/p&gt;&#xD;
&lt;p&gt;需求：&lt;/p&gt;&#xD;
&lt;p&gt;因子可多选：a，b，c&amp;#8230;&lt;/p&gt;&#xD;
&lt;p&gt;区域可多选： 广州, 佛山, 深圳&lt;/p&gt;&#xD;
&lt;p&gt;取出的数据：&lt;/p&gt;&#xD;
&lt;p&gt;区域&amp;nbsp;&amp;nbsp;&amp;nbsp; 监测因子&amp;nbsp; 值&lt;/p&gt;&#xD;
&lt;p&gt;广州&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a11 &lt;/p&gt;&#xD;
&lt;p&gt;广州&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b22&lt;/p&gt;&#xD;
&lt;p&gt;广州&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d33 &lt;/p&gt;&#xD;
&lt;p&gt;佛山&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a44&lt;/p&gt;&#xD;
&lt;p&gt;佛山&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c55&lt;/p&gt;&#xD;
&lt;p&gt;选择了"a,b,c&amp;#8221;和 "广州, 佛山, 深圳"&amp;nbsp; 效果图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/BruceLee521/WindowsLiveWriter/SilverlightListObjectSilverlightDataGrid_13514/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BruceLee521/WindowsLiveWriter/SilverlightListObjectSilverlightDataGrid_13514/image_thumb.png" width="244" height="240" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;选择了"a,b&amp;#8221;和 "广州, 佛山, 深圳"&amp;nbsp; 效果图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/BruceLee521/WindowsLiveWriter/SilverlightListObjectSilverlightDataGrid_13514/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BruceLee521/WindowsLiveWriter/SilverlightListObjectSilverlightDataGrid_13514/image_thumb_2.png" width="244" height="240" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;测试代码：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;//选择的多个因子&lt;br /&gt;string[] monitoringFactor = new string[] { "a", "b", "c" };&lt;br /&gt;//选择的多个区域&lt;br /&gt;string[] area = new string[] { "广州", "佛山", "深圳" };&lt;br /&gt;//没取实际表，构建一个数组模拟数据&lt;br /&gt;string[][] factorData = new string[5][];&lt;br /&gt;factorData[0] = new string[] { "广州", "a", "a11" };&lt;br /&gt;factorData[1] = new string[] { "广州", "b", "b22" };&lt;br /&gt;factorData[2] = new string[] { "广州", "d", "d33" };&lt;br /&gt;factorData[3] = new string[] { "佛山", "a", "a44" };&lt;br /&gt;factorData[4] = new string[] { "佛山", "c", "c55" }; &#xD;
&lt;p&gt;//xGrid是一个DataGrid控件名&lt;/p&gt;&#xD;
&lt;p&gt;xGrid.ItemsSource = BindData(monitoringFactor, area, factorData).ToDataSource();&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;public IEnumerable&amp;lt;IDictionary&amp;gt; BindData(string[] factor, string[] area, string[][] factordata)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //构造交叉表数据，返回IEnumerable&amp;lt;IDictionary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int j = 0; j &amp;lt; area.Length; j++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int m = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var returnDictionary = new Dictionary&amp;lt;string, object&amp;gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; factor.Length; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int x = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int k = 0; k &amp;lt; factordata.Length; k++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (factordata[k][0].ToString() == area[j].ToString() &amp;amp;&amp;amp; factordata[k][1] == factor[i].ToString())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x = x + 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (m == 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; returnDictionary["区域"] = area[j].ToString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; returnDictionary[factor[i].ToString()] = factordata[k][2].ToString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m = m + 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (x == 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; returnDictionary[factor[i].ToString()] = "0";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (m == 0 &amp;amp;&amp;amp; x == 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; returnDictionary["区域"] = area[j].ToString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; returnDictionary[factor[i].ToString()] = "0";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yield return returnDictionary;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;} &#xD;
&lt;p&gt;&lt;p&gt;public static class DataSourceCreator&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static readonly Dictionary&amp;lt;string, Type&amp;gt; _typeBySigniture = new Dictionary&amp;lt;string,Type&amp;gt;(); &#xD;
&lt;p&gt;public static IEnumerable ToDataSource(this IEnumerable&amp;lt;IDictionary&amp;gt; list)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IDictionary firstDict = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool hasData = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (IDictionary currentDict in list)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hasData = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; firstDict = currentDict;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!hasData)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new object[] { };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (firstDict == null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new ArgumentException("IDictionary entry cannot be null");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &#xD;
&lt;p&gt;string typeSigniture = GetTypeSigniture(firstDict); &#xD;
&lt;p&gt;Type objectType = GetTypeByTypeSigniture(typeSigniture); &#xD;
&lt;p&gt;if(objectType == null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TypeBuilder tb = GetTypeBuilder(typeSigniture); &#xD;
&lt;p&gt;ConstructorBuilder constructor =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tb.DefineDefaultConstructor(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MethodAttributes.Public |&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MethodAttributes.SpecialName |&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MethodAttributes.RTSpecialName); &#xD;
&lt;p&gt;foreach (DictionaryEntry pair in firstDict)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CreateProperty(tb,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Convert.ToString(pair.Key),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetValueType(pair.Value));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objectType = tb.CreateType(); &#xD;
&lt;p&gt;_typeBySigniture.Add(typeSigniture, objectType);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &#xD;
&lt;p&gt;return GenerateEnumerable(objectType, list, firstDict);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &#xD;
&lt;p&gt;private static Type GetTypeByTypeSigniture(string typeSigniture)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type type;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return _typeBySigniture.TryGetValue(typeSigniture, out type) ? type : null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &#xD;
&lt;p&gt;private static Type GetValueType(object value)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return value == null ? typeof (object) : value.GetType();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &#xD;
&lt;p&gt;private static string GetTypeSigniture(IDictionary firstDict)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StringBuilder sb = new StringBuilder();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (DictionaryEntry pair in firstDict)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sb.AppendFormat("_{0}_{1}", pair.Key, GetValueType(pair.Value));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return sb.ToString().GetHashCode().ToString().Replace("-", "Minus");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &#xD;
&lt;p&gt;private static IEnumerable GenerateEnumerable(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type objectType, IEnumerable&amp;lt;IDictionary&amp;gt; list, IDictionary firstDict)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var listType = typeof(List&amp;lt;&amp;gt;).MakeGenericType(new[] { objectType });&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var listOfCustom = Activator.CreateInstance(listType); &#xD;
&lt;p&gt;foreach (var currentDict in list)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (currentDict == null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new ArgumentException("IDictionary entry cannot be null");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var row = Activator.CreateInstance(objectType);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (DictionaryEntry pair in firstDict)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (currentDict.Contains(pair.Key))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PropertyInfo property =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objectType.GetProperty(Convert.ToString(pair.Key));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; property.SetValue(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Convert.ChangeType(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentDict[pair.Key],&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; property.PropertyType,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; null),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; null);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listType.GetMethod("Add").Invoke(listOfCustom, new[] { row });&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return listOfCustom as IEnumerable;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &#xD;
&lt;p&gt;private static TypeBuilder GetTypeBuilder(string typeSigniture)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AssemblyName an = new AssemblyName("TempAssembly" + typeSigniture);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AssemblyBuilder assemblyBuilder =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AppDomain.CurrentDomain.DefineDynamicAssembly(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; an, AssemblyBuilderAccess.Run);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MainModule"); &#xD;
&lt;p&gt;TypeBuilder tb = moduleBuilder.DefineType("TempType" + typeSigniture&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , TypeAttributes.Public |&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TypeAttributes.Class |&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TypeAttributes.AutoClass |&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TypeAttributes.AnsiClass |&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TypeAttributes.BeforeFieldInit |&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TypeAttributes.AutoLayout&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , typeof(object));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return tb;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &#xD;
&lt;p&gt;private static void CreateProperty(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TypeBuilder tb, string propertyName, Type propertyType)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FieldBuilder fieldBuilder = tb.DefineField("_" + propertyName,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; propertyType,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FieldAttributes.Private); &#xD;
&lt;p&gt;PropertyBuilder propertyBuilder =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tb.DefineProperty(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; propertyName, PropertyAttributes.HasDefault, propertyType, null);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MethodBuilder getPropMthdBldr =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tb.DefineMethod("get_" + propertyName,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MethodAttributes.Public |&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MethodAttributes.SpecialName |&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MethodAttributes.HideBySig,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; propertyType, Type.EmptyTypes); &#xD;
&lt;p&gt;ILGenerator getIL = getPropMthdBldr.GetILGenerator(); &#xD;
&lt;p&gt;getIL.Emit(OpCodes.Ldarg_0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getIL.Emit(OpCodes.Ldfld, fieldBuilder);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getIL.Emit(OpCodes.Ret); &#xD;
&lt;p&gt;MethodBuilder setPropMthdBldr =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tb.DefineMethod("set_" + propertyName,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MethodAttributes.Public |&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MethodAttributes.SpecialName |&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MethodAttributes.HideBySig,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; null, new Type[] { propertyType }); &#xD;
&lt;p&gt;ILGenerator setIL = setPropMthdBldr.GetILGenerator(); &#xD;
&lt;p&gt;setIL.Emit(OpCodes.Ldarg_0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setIL.Emit(OpCodes.Ldarg_1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setIL.Emit(OpCodes.Stfld, fieldBuilder);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setIL.Emit(OpCodes.Ret); &#xD;
&lt;p&gt;propertyBuilder.SetGetMethod(getPropMthdBldr);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; propertyBuilder.SetSetMethod(setPropMthdBldr);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;} &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;可以改变监测因子和区域数组看界面效果，没有考虑大数据量的性能，纯粹是一个测试代码。&lt;/p&gt;&#xD;
&lt;p&gt;题外说明：&lt;/p&gt;&#xD;
&lt;p&gt;为了减小Silverlight运行时的文件大小，大多数非泛型集合类型将不会再被支持。这些非泛型集合类型主要是那些曾经一度被看作.NET编程本质的类型，如ArrayList、Hashtable和Comparer等。&lt;br /&gt;根据微软基础类库团队的成员Inbar Gazit所言，非泛型集合将不会随Silverlight 1.1一起发布 。这就意味着虽然你仍可以在主要的.NET发行版本中使用这些类型，但它们却不能被用来访问Silverlight程序。受影响的类包括： &lt;br /&gt;ArrayList&lt;br /&gt;BitArray&lt;br /&gt;CaseInsensitiveComparer&lt;br /&gt;CaseInsensitiveHashCodeProvider&lt;br /&gt;CollectionBase&lt;br /&gt;Comparer&lt;br /&gt;CompatibleComparer&lt;br /&gt;DictionaryBase&lt;br /&gt;EmptyReadOnlyDictionaryInternal&lt;br /&gt;Hashtable&lt;br /&gt;IHashCodeProvider&lt;br /&gt;KeyValuePairs&lt;br /&gt;ListDictionaryInternal&lt;br /&gt;Queue&lt;br /&gt;ReadOnlyCollectionBase&lt;br /&gt;SortedList&lt;br /&gt;Stack&lt;br /&gt;为了不至于太过迷惑，在主要的.NET发行版本里，微软现在还不打算清除这些类，或者将它们标识为弃用（obsolete）。&lt;br /&gt;为了支持像数据绑定这样不需要知道类型的场景，在Silverlight里下面的一些非泛型接口将仍会得到保留： &#xD;
&lt;p&gt;IEnumerator&lt;br /&gt;IEnumerable&lt;br /&gt;ICollection&lt;br /&gt;IComparer&lt;br /&gt;IDictionary&lt;br /&gt;IDictionaryEnumerator&lt;br /&gt;DictionaryEntry&lt;br /&gt;IEqualityComparer&lt;br /&gt;IList&lt;br /&gt;有一些泛型集合也将不再被Silverlight支持，Inbar解释说：&lt;br /&gt;有三个泛型也被从Silverlight中清除掉了，包括Queue、Stack和LinkedList等。这儿并不是因为它们是非泛型，而是因为我们认为它们不是Silverlight所应提供的本质类型的一部分。记住，Silverlight是一个非常小的下载，它应该只包括对开发有用的最小API集合。用List实现Queue和Stack非常容易，而LinkedList也只是一个带有不同性能特性List的不同实现而已，因此这些并不是我们核心集合群组的本质部分。&lt;br /&gt;Inbar还发表了一篇关于为什么泛型集合应该被用在传统.NET编程中的文章，并提出了一些针对现有代码库如何进行改变的建议。 查看英文原文&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.infoq.com/news/2007/07/ArrayList-Gone"&gt;Silverlight to Not Support ArrayList &lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/BruceLee521/aggbug/1855994.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BruceLee521/archive/2010/10/19/1855994.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/BruceLee521/archive/2008/09/28/1301434.html</id><title type="text">MOSS OWSTIMER.EXE 占用 CPU 100%</title><summary type="text"/><published>2008-09-28T06:06:00Z</published><updated>2008-09-28T06:06:00Z</updated><author><name>Bruce Lee</name><uri>http://www.cnblogs.com/BruceLee521/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BruceLee521/archive/2008/09/28/1301434.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BruceLee521/archive/2008/09/28/1301434.html"/></entry><entry><id>http://www.cnblogs.com/BruceLee521/archive/2008/09/25/1299067.html</id><title type="text">SPListItem Update Operation is not valid due to the current state of the object(对象的当前状态使该操作无效。)</title><summary type="text">System.InvalidOperationException: 对象的当前状态使该操作无效。 在 Microsoft.SharePoint.WebControls.SPControl.SPWebEnsureSPControl(HttpContext context) 在 Microsoft.SharePoint.WebControls.SPControl.GetContextWeb(HttpC...</summary><published>2008-09-25T12:38:00Z</published><updated>2008-09-25T12:38:00Z</updated><author><name>Bruce Lee</name><uri>http://www.cnblogs.com/BruceLee521/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BruceLee521/archive/2008/09/25/1299067.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BruceLee521/archive/2008/09/25/1299067.html"/></entry><entry><id>http://www.cnblogs.com/BruceLee521/archive/2008/09/25/1298450.html</id><title type="text">配置MOSS的FBA步骤与问题(发现设置权限策略的里选人不好用，选不到Provider的人)</title><summary type="text">1。写Provider2。扩展SSP站点 区域：Extranet3。修改SSP原站点的web.config&amp;lt;section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings,Microsoft.Practices.Enterprise...</summary><published>2008-09-24T17:57:00Z</published><updated>2008-09-24T17:57:00Z</updated><author><name>Bruce Lee</name><uri>http://www.cnblogs.com/BruceLee521/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BruceLee521/archive/2008/09/25/1298450.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BruceLee521/archive/2008/09/25/1298450.html"/></entry><entry><id>http://www.cnblogs.com/BruceLee521/archive/2008/09/25/1298449.html</id><title type="text">VS2005里调试Javascript</title><summary type="text"/><published>2008-09-24T17:51:00Z</published><updated>2008-09-24T17:51:00Z</updated><author><name>Bruce Lee</name><uri>http://www.cnblogs.com/BruceLee521/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BruceLee521/archive/2008/09/25/1298449.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BruceLee521/archive/2008/09/25/1298449.html"/></entry><entry><id>http://www.cnblogs.com/BruceLee521/archive/2008/09/25/1298448.html</id><title type="text">解决模拟MOSS用户调用WebService打开个人站点进行操作</title><summary type="text">开始以为要构建WindowsIdentity windowsIdentity = WindowsIdentity.GetCurrent();GenericPrincipal genericPrincipal =new GenericPrincipal(genericIdentity, roles);然后把HttpContext.Current.User 置成上面构造的。但发现在打开个人站点时出错。...</summary><published>2008-09-24T17:51:00Z</published><updated>2008-09-24T17:51:00Z</updated><author><name>Bruce Lee</name><uri>http://www.cnblogs.com/BruceLee521/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BruceLee521/archive/2008/09/25/1298448.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BruceLee521/archive/2008/09/25/1298448.html"/></entry><entry><id>http://www.cnblogs.com/BruceLee521/archive/2008/09/25/1298447.html</id><title type="text">模态窗口的读缓存问题</title><summary type="text">使用模态窗口时，还得注意三个问题： 1、要弹出的页面中，一定要保证&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;标签间有&amp;lt;base target=&amp;#8220;_self&amp;#8221;&amp;gt;，否则会弹出的模态窗口上，点击按钮时，会再次弹出一个新页面。 2、被弹出页面的按钮的事件处理中，应该有Response.Write(new Function().ClosePage());语句，用以...</summary><published>2008-09-24T17:50:00Z</published><updated>2008-09-24T17:50:00Z</updated><author><name>Bruce Lee</name><uri>http://www.cnblogs.com/BruceLee521/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BruceLee521/archive/2008/09/25/1298447.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BruceLee521/archive/2008/09/25/1298447.html"/></entry><entry><id>http://www.cnblogs.com/BruceLee521/archive/2008/09/17/1292904.html</id><title type="text">使用MOSS的服务器端控件报错</title><summary type="text">现象，自定义开发的页面，部署到Layout下。页面使用了MOSS的RichTextField服务器端控件  &amp;lt;SharePointWebControls:RichTextField ID="RichTextField1" ControlMode="New" FieldName="CommListTopicContent" runat="server"&amp;gt; &amp;lt;/SharePointW...</summary><published>2008-09-17T14:43:00Z</published><updated>2008-09-17T14:43:00Z</updated><author><name>Bruce Lee</name><uri>http://www.cnblogs.com/BruceLee521/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BruceLee521/archive/2008/09/17/1292904.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BruceLee521/archive/2008/09/17/1292904.html"/></entry><entry><id>http://www.cnblogs.com/BruceLee521/archive/2008/09/17/1292902.html</id><title type="text">Can't User UserProfileManager.GetUserProfile Get User Userprofile In Web Service,Error:System.ArgumentNullException: Value Cannot Be Null.(不能在Webservice中使用UserProfileManager的GetUserProfile得到用户配置，报错：System.ArgumentNullException: 值不能为空。)</title><summary type="text">E文环境提示：Error:System.ArgumentNullException: Value cannot be null.Parameter name: serverContextat Microsoft.Office.Server.SiteContext..ctor(ServerCo ntext serverContext)at Microsoft.Office.Server.SiteCo...</summary><published>2008-09-17T14:42:00Z</published><updated>2008-09-17T14:42:00Z</updated><author><name>Bruce Lee</name><uri>http://www.cnblogs.com/BruceLee521/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BruceLee521/archive/2008/09/17/1292902.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BruceLee521/archive/2008/09/17/1292902.html"/></entry></feed>
