F # dan C# kütüphanesi tüketmek istiyorum. Çoğunlukla bu oldukça basit olmuştur. Ancak, bir Task<T>
döndüren bir işlevi çağırmaya çalışırsanız, döndürülen değeri alamıyorum.F # türünde bir async C# yöntemiyle doğru bir şekilde bekletme Görev türü <T>
Yani, aşağıdaki tanımıyla C# yöntemi vardır:
public async Task<TEvent> ReadEventAsync<TEvent>(string streamName, int position) where TEvent: class
Ve şöyle F # gelen bu yöntemi tüketmeye çalışıyorum:
let readEventFromEventStore<'a when 'a : not struct> (eventStore:IEventStoreRepository) (streamName:string) (position:int) =
async {
return eventStore.ReadEventAsync(streamName, position)
|> Async.AwaitTask
}
Ben kısmen bu işlevi uygulamak Olayı almak istediğiniz bir IEventStoreRepository
örneğini ve akış adını:
let readEvent = readEventFromEventStore eventStore streamName
Ben
event
değerini aldığınızda
let event = readEvent StreamPosition.Start
bir FSharpAsync<object>
yerine beklediğimden Task<T>
den T
geçerli:
Sonra son olarak, kalan parametreyi geçerlidir.
Task<T>
bir dönüş türü ile C# ile yazılmış bir async
yöntemini çağırarak ve T
değerini erişmenin F # doğru yöntem nedir?
Geri dönüşü deneyin! eventStore. ... 'dönüş eventStore yerine. ... '? – ildjarn
@ildjarn - Sadece orada denedim. Ne yazık ki, aynı sonucu yani FSharpAsync