Say I have interface:
interface IProductRepository
{
Task SaveProduct(Product p);
}
previously implemented by C# class:
class CSharpProductRepository : IProductRepository
{
public Task SaveProduct(Product p)
{
_db.Products.Add(p);
return _db.SaveChangesAsync();
}
}
Now I want to implement the same in F#:
type FSharpProductRepository =
interface IProductRepository with
member this.SaveProduct(p : Product) : Task = this.SaveProduct(p) // error 1
member this.SaveProduct(p : Product) = async {
db.Products.Add(p)
return db.SaveChangesAsync() |> Async.AwaitTask // error 2
}
But getting an error (1):
This expression was expected to have type Task but here has type Async<'a>
and (2):
Type constraint mismatch. The type Task is not compatible with type Task<'a>