English 中文(简体)
f#: de-fluent API的最好方法?
原标题:
  • 时间:2009-04-07 05:34:38
  •  标签:

我延长连贯NHibernate更好使用f#(即报价支持),并希望一些反馈de-fluenting API。f#要求返回值被使用,除非他们单位类型。这最终终止与“| >忽略”每一行:

type ProductMap() as m = inherit QClassMap<Product>() do
    let x = Unchecked.defaultof<Product> 
    m.Id <@ x.Id @> |> ignore
    m.Map <@ x.Name @> |> ignore
    m.Map <@ x.Price @> |> ignore
    (m.HasManyToMany <@ seq x.StoresStockedIn @>)
        .Cascade.All()
        .Inverse()
        .WithTableName("StoreProduct") |> ignore

我的第一反应是向基类添加更多的方法所以他们返回单位。例如,“伊迪”和“MapI”:

...
m.IdI <@ x.Id @>
m.MapI <@ x.Name @> 
m.MapI <@ x.Price @> 
... 

但这需要特定的过载,和长链仍需要| >忽视。我还考虑扩展对象属性:

(m.Id <@ x.Id @>).Done
(m.Map <@ x.Name @>).Done
(m.Map <@ x.Price @>).Done
(m.HasManyToMany <@ seq x.StoresStockedIn @>)
    .Cascade.All()
    .Inverse()
    .WithTableName("StoreProduct").Done

你怎么认为?

最佳回答

IMHO一个更好的方法是从头开始< em >思维f# < / em > (e。g函数管道,鞭笞,组合子)而不是包装连贯nhibernate, <强>但< /强>使用连贯nhibernate所用于生成映射。,建立一个“平行连贯nhibernate”独家使用f#。

我< a href = " http://bugsquash.blogspot.com/2009/04/using-windsor-in-f.html " rel = " nofollow noreferrer " >最近发布了< / >关于与温莎年代类似的问题在f#连贯接口。我的结论是,许多dsl /连贯接口为c# / VB。净将f#所以我认为最好年代建立特定的连贯接口,适合f#的方式。

问题回答

暂无回答




相关问题
热门标签