1
確定。我試圖採取List<Product>
並將其傳遞到採用通用List<object>
並通過循環創建List<dynamic>
的方法。該方法需要能夠處理其他對象的列表(即:Item,Customer,Package等)。動態列表的強類型對象列表
這個想法是這樣的,我將有一個動態的通用列表,我可以通過JSON通過線路發送。
我該如何做到這一點?
確定。我試圖採取List<Product>
並將其傳遞到採用通用List<object>
並通過循環創建List<dynamic>
的方法。該方法需要能夠處理其他對象的列表(即:Item,Customer,Package等)。動態列表的強類型對象列表
這個想法是這樣的,我將有一個動態的通用列表,我可以通過JSON通過線路發送。
我該如何做到這一點?
最簡單的方法是使用LINQ建立一個新列表。由於您使用的是.NET 4,你有協提供給你,所以你可以使用:
List<object> foo = products.ToList<object>();
甚至只是:
List<object> foo = new List<object>(products);
您不能通過現有列表,因爲List<Product>
只是不是 a List<object>
。
當然,如果您可以更改您的方法來接受IEnumerable<object>
而不是,由於協方差,這將工作正常。如果您僅嘗試從參數集合中讀取讀取,則這可能是可行的。
請注意,您不清楚爲什麼您需要使用反射來創建List<dynamic>
- 您的方法實際上在做什麼?爲什麼你就不能使用:
List<dynamic> foo = new List<dynamic>(products);
如果提問者使用.NET 4.5,還有另一種** **協變接口,['IReadOnlyList'](http://msdn.microsoft.com/en -us/library/hh192385.aspx)以及諸如'List '和'T []'之類的東西來實現它,並且由於協方差,'IReadOnlyList '也是'IReadOnlyList