我正在尝试为 F# 中的消息设置消息格式化程序。在 C# 中,我可以拥有:
foreach (System.Messaging.Message message in messages)
{
message.Formatter = new XmlMessageFormatter(new String[] { "System.String,mscorlib" });
string body = message.Body.ToString();
Console.WriteLine(body);
}
效果很好。我现在想在 F# 中做同样的事情并拥有:
let mList = messageQueue.GetAllMessages()
let xt = [| "System.String,mscorlib" |]
for m in mList do
m.Formatter = XmlMessageFormatter(xt)
在编译时导致此错误:
错误 2 此表达式应具有 IMessageFormatter 类型
,但此处具有 XmlMessageFormatter 类型
我怀疑我在 F# 中遗漏了一个基本概念。我究竟做错了什么?
--EDIT-- latkin 的回答完美。以防万一其他人感兴趣,这里是 F# 中的完整工作程序:
open System.Messaging
[<EntryPoint>]
let main argv =
printfn "%A" argv
let messageQueue = new MessageQueue(".\private$\Twitter")
messageQueue.MessageReadPropertyFilter.SetAll();
let mList = messageQueue.GetAllMessages()
let xt = [| "System.String,mscorlib" |]
for m in mList do
m.Formatter <- XmlMessageFormatter(xt)
printfn "%s " (m.Body.ToString())
0 // return an integer exit code