F# 在F中调用Task.Builder函数#
线路F# 在F中调用Task.Builder函数#,f#,F#,线路 | Log (message, ack) -> let CreateEventSourcingConnection() = task { let connection = let ipEndPoint = IPEndPoint(IPAddress.Loopback, 1113) EventStoreCon
| Log (message, ack) ->
let CreateEventSourcingConnection() =
task {
let connection =
let ipEndPoint = IPEndPoint(IPAddress.Loopback, 1113)
EventStoreConnection.Create(ipEndPoint)
do! connection.ConnectAsync()
return connection
}
let connectionM = CreateEventSourcingConnection ()
let AddEventToStreamAsync (connection: IEventStoreConnection) streamName eventName message =
task {
let serializedEventData =
message
|> JsonConvert.SerializeObject
|> Encoding.UTF8.GetBytes
let event = EventData(Guid.NewGuid(), eventName, true, serializedEventData, null)
let! _ = connection.AppendToStreamAsync(streamName, int64 ExpectedVersion.Any, event)
()
}
AddEventToStreamAsync connectionM "a" "a"
产生此错误
类型“Task”与类型“IEventStoreConnection”不兼容
我怎样才能解决这个问题?您需要执行
让我来
对于从CreateEventSourcingConnection
返回的任务
,在将其传递给AddEventToStreamAsync
之前,一种方法是更改签名以接受任务,然后让代码>在其内部,如下所示:
AddEventToStreamAsync connectionM "a" "a"
让AddEventToStreamAsync(connectionTask:Task)streamName事件名消息=
任务{
让我们序列化deventdata=
消息
|>JsonConvert.SerializeObject
|>Encoding.UTF8.GetBytes
let event=EventData(Guid.NewGuid(),eventName,true,serializedEventData,null)
让!连接=连接任务
let!\ux=connection.AppendToStreamAsync(streamName,int64 ExpectedVersion.Any,事件)
()
}
AddEventToStreamAsync连接M“a”“a”
let AddEventToStreamAsync (connectionTask: Task<IEventStoreConnection>) streamName eventName message =
task {
let serializedEventData =
message
|> JsonConvert.SerializeObject
|> Encoding.UTF8.GetBytes
let event = EventData(Guid.NewGuid(), eventName, true, serializedEventData, null)
let! connection = connectionTask
let! _ = connection.AppendToStreamAsync(streamName, int64 ExpectedVersion.Any, event)
()
}
AddEventToStreamAsync connectionM "a" "a"