【发布时间】:2014-04-28 01:34:21
【问题描述】:
我正在通过创建一个简单的数据访问类来使用 F# 接口。
界面是:
type IUserAccess =
abstract member GetUsers : (dbSchema.ServiceTypes.Users -> bool) -> dbSchema.ServiceTypes.Users seq
abstract member GetAllUsers : unit -> dbSchema.ServiceTypes.Users seq
在课堂上,我是这样调用方法的:
type UserAccess() =
let db = dbSchema.GetDataContext()
interface IUserAccess with
member this.GetUsers cond =
let query = query {
for row in db.Users do
select row }
query |> Seq.where cond
member this.GetAllUsers () =
(this:>IUserAccess).GetUsers (fun _ -> true)
我有点担心的是我调用GetAllUsers 函数的方式,特别是(this:>IUserAccess) 部分。调用在同一接口中实现的方法的最简单方法是什么?
我能想到的一个简单选项是直接在UserAccess() 类中创建GetUsers 方法,然后从GetUsers 和GetAllUsers 的接口实现中调用它,但这意味着实现了一个新的私有方法,它我想避免。还有其他选择吗?
【问题讨论】: