1

好的。我正在尝试将 aList<Product>传递给一个方法,该方法采用泛型List<object>并循环它们以创建List<dynamic>通过反射。此方法需要能够处理其他对象的列表(即:Item、Customer、Package 等)。

然后我的想法是,我将有一个通用的动态列表,我可以通过 JSON 通过网络发送。

我怎样才能做到这一点?

4

1 回答 1

7

最简单的方法是只使用 LINQ 来构建一个新列表。鉴于您使用的是 .NET 4,您可以获得协方差,因此您可以使用:

List<object> foo = products.ToList<object>();

甚至只是:

List<object> foo = new List<object>(products);

您不能通过现有列表,因为aList<Product>根本不是List<object>.

当然,如果你可以改变你的方法来接受一个IEnumerable<object>,那会因为协方差而工作得很好。如果您只是尝试从参数集合中读取,这可能是可行的。

请注意,尚不清楚为什么需要然后使用反射来创建List<dynamic>-您的方法实际上在做什么?为什么你不能只使用:

List<dynamic> foo = new List<dynamic>(products);
于 2013-01-04T21:13:43.710 回答