考虑一个代码块试图将匿名对象传递给C#中的另一个方法的场景。
以下是一个例子:
ThreadPool.QueueUserWorkItem(new WaitCallback(RpvService.GetRpvDailyResults),
new { req = request, rpvDic = rpvDictionary }
);
如何在接收端收到匿名对象?
答案 0 :(得分:6)
定义自己的类或结构会好得多。
匿名对象只不过是编译器为您生成的类。尝试在方法之间传递这个是一个坏主意,因为它会导致问题。
自己定义类型没有缺点。由于只有两个对象,您还可以使用KeyValuePair(.NET 2)或Tuple(在.NET 4中)。
答案 1 :(得分:1)
来自MSDN:
匿名类型具有方法范围。要在方法边界外传递匿名类型或包含匿名类型的集合,必须先将类型转换为对象。然而,这打败了匿名类型的强类型。如果必须存储查询结果或将它们传递到方法边界之外,请考虑使用普通的命名结构或类而不是匿名类型。
答案 2 :(得分:0)
在C#4.0中你可以使用动态,然后你可以把它投射到你想要的东西