在C#中的方法之间传递和接收匿名对象

时间:2010-02-10 17:11:28

标签: c# anonymous-types

考虑一个代码块试图将匿名对象传递给C#中的另一个方法的场景。

以下是一个例子:

ThreadPool.QueueUserWorkItem(new WaitCallback(RpvService.GetRpvDailyResults),
                             new { req = request, rpvDic = rpvDictionary }
                            );

如何在接收端收到匿名对象?

3 个答案:

答案 0 :(得分:6)

定义自己的类或结构会好得多。

匿名对象只不过是编译器为您生成的类。尝试在方法之间传递这个是一个坏主意,因为它会导致问题。

自己定义类型没有缺点。由于只有两个对象,您还可以使用KeyValuePair(.NET 2)或Tuple(在.NET 4中)。

答案 1 :(得分:1)

来自MSDN

  

匿名类型具有方法范围。要在方法边界外传递匿名类型或包含匿名类型的集合,必须先将类型转换为对象。然而,这打败了匿名类型的强类型。如果必须存储查询结果或将它们传递到方法边界之外,请考虑使用普通的命名结构或类而不是匿名类型。

答案 2 :(得分:0)

在C#4.0中你可以使用动态,然后你可以把它投射到你想要的东西