【发布时间】:2017-05-05 18:33:31
【问题描述】:
如何遍历作为(first, second, third) => new { One = first, Two = second, Three = third }下方的对象传入的anonymous type
如果我询问消息的类型并打印它,它会说:<>f__AnonymousType0 3[MtApi.MtQuote,MtApi.MtQuote,MtApi.MtQuote]
//**How do I convert an object to the anonymous type?**
static void ShowAnonymousTypeMessage(object message)
{
foreach(var quote in message)
Console.WriteLine(
quote.Instrument + ": " + quote.Bid.ToString() + quote.Ask.ToString());
}
...
var pattern = observable1.And(observable2).And(observable3);
var plan = pattern.Then((first, second, third) => new { One = first, Two = second, Three = third });
var zippedSequence = Observable.When(plan);
zippedSequence.Subscribe(
ShowAnonymousTypeMessage
);
【问题讨论】:
-
你能设置断点并询问模式以查看它是什么类型以及它是否实现了 IEnumerable?
-
在 C#dynamic 来做到这一点,但这实际上不是匿名类型的用途,
dynamic并不是要将 C# 转换为 JavaScript。如果你将它传递给一个方法,它应该有一个真实的类型。即使是元组也可以。 -
@kevin 查看原帖
-
This 编程指南说,“您不能将方法、属性、构造函数或索引器的形式参数声明为具有匿名类型。将匿名类型...作为参数传递给方法,您可以将参数声明为类型对象。但是,这样做违背了强类型的目的。如果您必须存储查询结果或将它们传递到方法边界之外,请考虑使用普通的命名结构或类而不是匿名类型。”
-
@ed 是的,一个元组可以工作,因为这很容易处理。
标签: c# linq system.reactive anonymous-types